如何在Google Sheets中将多列订单数据转换为每行对应一款产品的格式
你可以直接通过Google Sheets内置数组公式实现该需求,无需额外脚本,具体方案如下:
前置确认
先明确你的原始数据结构规则:
- 前N列是订单公共字段:同一订单下所有产品共用的信息,例如订单号、下单时间、收件人信息等
- 后续每M列为一组产品独立字段:全表所有产品字段组的结构完全一致,例如每3列对应一款产品的「产品名称/SKU/购买数量」
实现公式
在空白工作表的A1单元格输入以下公式,按实际情况替换参数即可:
=LET( raw_data, '原始数据表名'!A2:Z, common_col_cnt, 3, product_col_cnt, 3, common_fields, CHOOSECOLS(raw_data, SEQUENCE(common_col_cnt)), product_fields, WRAPROWS(TOCOL(CHOOSECOLS(raw_data, SEQUENCE(COLUMNS(raw_data)-common_col_cnt,1,common_col_cnt+1))),product_col_cnt), repeat_common, BYROW(common_fields, LAMBDA(r, MAKEARRAY(ROUNDUP((COLUMNS(raw_data)-common_col_cnt)/product_col_cnt,0),common_col_cnt, LAMBDA(x,y, INDEX(r,y))))), filter_empty, FILTER(HSTACK(TOCOL(repeat_common,1),product_fields), INDEX(product_fields,,1)<>""), header, HSTACK(CHOOSECOLS('原始数据表名'!1:1, SEQUENCE(common_col_cnt)), CHOOSECOLS('原始数据表名'!1:1, SEQUENCE(product_col_cnt,1,common_col_cnt+1))), VSTACK(header, filter_empty) )
参数调整说明
- 将
'原始数据表名'替换为你存放原始数据的工作表名称 - 将
common_col_cnt的取值替换为你实际的订单公共字段总列数 - 将
product_col_cnt的取值替换为每款产品对应的独立字段总列数
实现效果
公式会按原始数据的订单顺序处理,同订单拆分出的多款产品行会相邻排列,不会出现跨订单混合的情况,同时自动过滤无内容的空产品组行。
内容的提问来源于stack exchange,提问作者Nathan McGregor
相关产品推荐
相关产品推荐

