Google Sheets逗号分隔值实现Cartesian / Cross Join无脚本方案咨询
Google Sheets无脚本实现多行多属性笛卡尔积方案
核心公式
假设你的6个属性列分布在A-F列,第1行为表头,第2行起为父商品数据,在结果列首个单元格(如G2)输入以下溢出公式即可自动生成整列结果,无需逐行下拉:
=BYROW(A2:F,LAMBDA(row,IF(COUNTA(row)=0,, LET( attrs,BYCOL(row,LAMBDA(col,IF(col="",{""},SPLIT(col,",",1,1)))), reduce_base,CHOOSEROWS(attrs,1), rest_attrs,DROP(attrs,1), combos,REDUCE(reduce_base,rest_attrs,LAMBDA(prev,curr, TOCOL(prev&"|"&TOROW(curr),3) )), SUBSTITUTE(combos,"|",",") ) ))
功能说明
- 自动兼容空属性字段:若某行的特定字段无取值,公式会自动将其作为空值参与拼接,不会中断计算
- 自动处理逗号分隔属性:无需提前手动拆分字段,公式内置拆分逻辑,自动识别
xs,s,m,l,xl这类格式的属性列表 - 整列自动生效:解决了单行公式下拉后失效的问题,只需输入一次即可处理所有父商品行
自定义调整方式
- 若你的属性列范围不是
A2:F,直接替换公式中的范围参数即可 - 若需要调整最终属性组合的分隔符,修改最后一行
SUBSTITUTE(combos,"|",",")里的逗号为你需要的分隔符即可 - 若属性值本身带
|字符,可将公式中临时拼接用的|替换为其他不会出现在属性值里的特殊字符即可
内容的提问来源于stack exchange,提问作者Nat Bradley
相关产品推荐
相关产品推荐

