Excel数据转置合并为单列及FLATTEN扁平化关联数据匹配问题
表格转置合并及扁平化处理方案
需求1:行转置后合并为单列
适配动态列数的场景,可直接使用TOCOL+TRANSPOSE组合公式实现,支持Google Sheets、Excel 365/2021及以上版本:
=TOCOL(TRANSPOSE(你的原始数据区域),1)
公式说明:第二个参数设为1会自动跳过空单元格,不需要手动调整区域范围即可适配列数的动态变化。
需求2:size1_x区间扁平化并关联上下文固定信息
假设你的每行结构为:[左侧固定字段列, size1_x动态列区间, 右侧固定字段列],可直接使用以下动态数组公式实现,自动复制固定信息到扁平化后的对应行:
=LET( 原始区域, 选中你的全量原始数据范围, 每行左侧固定列数, 填入你实际的左段固定列数量, 每行右侧固定列数, 填入你实际的右段固定列数量, 单行动态列总数, COLUMNS(原始区域)-每行左侧固定列数-每行右侧固定列数, 总行数, ROWS(原始区域), 结果, REDUCE({"左列1","左列2","size值","右列1","右列2"},SEQUENCE(总行数),LAMBDA(累计结果,当前行号, 当前行左段, INDEX(原始区域,当前行号,SEQUENCE(每行左侧固定列数)), 当前行右段, INDEX(原始区域,当前行号,SEQUENCE(每行右侧固定列数,,每行左侧固定列数+单行动态列总数+1)), 当前行size值, FLATTEN(INDEX(原始区域,当前行号,SEQUENCE(单行动态列总数,,每行左侧固定列数+1))), 非空size值, FILTER(current_vals,当前行size值<>""), 拼接当前行结果, HSTACK(EXPAND(当前行左段,ROWS(非空size值),,当前行左段),非空size值,EXPAND(当前行右段,ROWS(非空size值),,当前行右段)), VSTACK(累计结果,拼接当前行结果) )), 结果 )
注意事项
- 公式仅需要修改前三个参数即可适配你的实际表格结构,不需要调整后续逻辑
- 公式自动过滤size区间的空值,不会产生冗余空行
- 如果使用不支持LET/LAMBDA的低版本Excel,可通过辅助列分步实现:先单独扁平化所有size1_x区间的值,再用
INDEX(固定列,ROUNDUP(ROW()/每行平均size数量,0))批量填充关联的固定信息即可
内容的提问来源于stack exchange,提问作者Kamil Ciesielski
相关产品推荐
相关产品推荐

