如何用单个数组公式在Google Sheets中拆分列并复制行生成数组
Google Sheets 高级数组公式解决方案:关联维度列与展开页码序列
完整公式
=TOCOL( LAMBDA(rawData, MAP( CHOOSECOLS(rawData, 1), CHOOSECOLS(rawData, 2), CHOOSECOLS(rawData, 3), lambda(dim1, dim2, pages, LAMBDA(splitCommas, TOCOL( MAP(splitCommas, lambda(pagePart, LAMBDA(splitDash, HSTACK( REPT(dim1, IFERROR(SEQUENCE(1, INDEX(splitDash,2)-INDEX(splitDash,1)+1,1,1),1)), REPT(dim2, IFERROR(SEQUENCE(1, INDEX(splitDash,2)-INDEX(splitDash,1)+1,1,1),1)), IFERROR(SEQUENCE(1, INDEX(splitDash,2)-INDEX(splitDash,1)+1, INDEX(splitDash,1),1), pagePart) ) )(SPLIT(pagePart, "-")) ) ) )(SPLIT(pages, ",")) ) ) )(A5:C6), 1)
逻辑拆解
- 外层数据封装:通过
LAMBDA(rawData, ...)(A5:C6)将输入的三列数据整体传入,确保后续处理能同步获取维度值与页码信息 - 逐行遍历处理:
MAP函数同时读取每行的Dimension1、Dimension2和Pages值,保证维度与页码的对应关系不丢失 - 页码拆分与展开:先按逗号拆分页码字符串为单个条目,再对每个条目按横杠拆分,区分单个页码和连续页码范围:
- 单个页码:直接保留页码,同步复制对应维度值
- 连续页码:用
SEQUENCE生成完整页码序列,通过REPT将维度值复制对应行数,再用HSTACK横向拼接维度列与页码列
- 结果扁平化:用
TOCOL将多层嵌套的数组转为规整的二维表格结构
核心改进说明
你之前的公式仅完成了页码展开,未同步关联维度列的核心原因是没有在遍历过程中携带维度值。本方案通过在MAP中同时传入三列数据,让每一步页码处理都能绑定对应行的维度信息,最终实现维度列与展开后页码的一一对应。
内容的提问来源于stack exchange,提问作者Wesley Jeftha
相关产品推荐
相关产品推荐

