如何自动将Google Spreadsheet宽表转换为规范表?
在Google Sheets中实现指定列转行并复制对应字段
你需要将表格中的EL、FL、MAT、SONSTIGES列转换为行,同时保留并复制对应行的MONTH、MONTH_NAME、IST、BUDGET字段,以下是两种高效的实现方案:
方案一:数组公式(自动更新,适配动态数据)
假设原始数据位于A1:H(表头在第1行),在空白单元格(如J1)输入以下公式即可生成目标表格:
=VSTACK( {"MONTH","MONTH_NAME","IST","BUDGET","BUDGET_CLUSTER","CLUSTER_AMOUNT"}, LET( source, A2:H, fixed_cols, CHOOSECOLS(source, 1,2,3,4), cluster_cols, CHOOSECOLS(source,5,6,7,8), cluster_names, {"EL","FL","MAT","SONSTIGES"}, repeat_fixed, INDEX(FLATTEN(MAKEARRAY(ROWS(fixed_cols), ROWS(cluster_names), LAMBDA(r,c, INDEX(fixed_cols,r,))))), repeat_names, INDEX(FLATTEN(TRANSPOSE(cluster_names))), repeat_values, INDEX(FLATTEN(cluster_cols)), HSTACK(repeat_fixed, repeat_names, repeat_values) ) )
公式说明:
source:指定原始数据范围(跳过表头行)fixed_cols:提取需要保留的固定字段列cluster_cols:提取需要转成行的目标列repeat_fixed:将固定字段按聚类列数量重复,确保每个原始行对应4条结果repeat_names:平铺聚类列名称,作为BUDGET_CLUSTER的值repeat_values:平铺聚类列的数值,作为CLUSTER_AMOUNT的值VSTACK+HSTACK:合并表头与结果数据,生成完整表格
方案二:内置逆透视功能(手动操作,适合静态数据)
如果不需要自动更新,可直接使用Google Sheets的内置功能快速转换:
- 选中原始数据的全部范围(包含表头)
- 点击菜单栏「数据」→「数据透视表和图表」→「逆透视列」
- 在弹窗中选择
MONTH、MONTH_NAME、IST、BUDGET,点击「保留」 - 剩余的
EL、FL、MAT、SONSTIGES会自动被标记为待逆透视列,点击「确定」 - 将生成的
属性列重命名为BUDGET_CLUSTER,值列重命名为CLUSTER_AMOUNT即可
内容的提问来源于stack exchange,提问作者amarokWPcom
相关产品推荐
相关产品推荐

