如何按category_name拆分product_id并关联partner_id与status数据
解决Google Sheets数据拆分关联问题
针对你需要将product_id与拆分后的category_name一一对应,并关联partner_id和status的需求,这里提供两种可行的Google Sheets公式方案:
方案1:使用REDUCE+VSTACK实现带表头的自动生成
这个公式会自动包含表头,并将所有符合条件的行拆分后堆叠:
=REDUCE({"product_id","category_name","partner_id","status"}, 数据源!A2:D, LAMBDA(acc, row, IF(INDEX(row,2)="", acc, VSTACK(acc, ARRAYFORMULA( {INDEX(row,1), SPLIT(INDEX(row,2), "、"), INDEX(row,3), INDEX(row,4)} ) ) ) ))
原理说明:
REDUCE初始化结果为指定表头,遍历每一行原始数据- 跳过
category_name为空的行 - 对有效行,拆分
category_name(按中文顿号、分割),并将product_id、拆分后的类别、partner_id、status组合成多行,通过VSTACK追加到结果中
方案2:使用LET+INDEX实现更高效的数组运算
如果你的Google Sheets支持LET函数(新版已默认支持),可以用这个更简洁高效的公式:
=ARRAYFORMULA( LET( data, 数据源!A2:D, cats, SPLIT(INDEX(data,,2), "、"), row_nums, SEQUENCE(ROWS(data)), flat_rows, FLATTEN(IF(cats<>"", row_nums,)), { INDEX(INDEX(data,,1), flat_rows), FLATTEN(cats), INDEX(INDEX(data,,3), flat_rows), INDEX(INDEX(data,,4), flat_rows) } ) )
原理说明:
LET定义变量简化公式结构,data指代原始数据范围cats拆分所有category_name为二维数组flat_rows生成与拆分后类别一一对应的原始行号数组- 通过
INDEX按行号提取对应product_id、partner_id、status,与展开的类别组合成最终结果
使用注意:
- 确保公式中的
数据源!A2:D替换为你实际的原始数据所在标签页和范围 - 如果不需要自动生成表头,可自行手动输入表头后,将公式放在
A2单元格(方案1需去掉初始化的表头部分,改为REDUCE({}, 数据源!A2:D, ...))
内容的提问来源于stack exchange,提问作者Bungs
相关产品推荐
相关产品推荐

