You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets或Excel中生成5列数据的唯一组合结果?

嘿,这个需求我太熟了!要生成5列独立数据的所有唯一组合并放到F列,不管是Google Sheets还是Excel都有靠谱的实现方案,我给你一步步拆解清楚:

Google Sheets 实现方法

我推荐用函数组合直接生成,操作简单且实时更新:

假设你的数据在A到E列,直接在F1单元格输入以下公式(记得根据实际情况调整列范围,比如如果A列数据只到A10,就写成A1:A10而不是A:A,能提升效率):

=UNIQUE(FLATTEN(ARRAYFORMULA(
  FILTER(A:A,A:A<>"") & "|" &
  TRANSPOSE(FILTER(B:B,B:B<>"")) & "|" &
  TRANSPOSE(TRANSPOSE(FILTER(C:C,C:C<>""))) & "|" &
  TRANSPOSE(TRANSPOSE(TRANSPOSE(FILTER(D:D,D:D<>"")))) & "|" &
  TRANSPOSE(TRANSPOSE(TRANSPOSE(TRANSPOSE(FILTER(E:E,E:E<>"")))))
)))

公式拆解:

  • FILTER(列, 列<>""):先过滤掉每列的空值,避免生成带空值的无效组合
  • 多次TRANSPOSE:每多一列就多一次转置,让列数据变成行,和前面的组合形成笛卡尔积(Google Sheets里行和列的一维数组会自动生成交叉矩阵)
  • FLATTEN:把多维的组合矩阵转成一维列表,方便放到F列
  • UNIQUE:自动去掉重复的组合(比如某列有重复值时会生成重复组合,这一步搞定去重)
  • "|"是组合的分隔符,你可以换成逗号、空格或者其他不会和数据内容冲突的符号,比如~
Excel 实现方法

分两种场景,选适合你的版本:

方法1:动态数组函数法(适用于Excel 365/2021及以上)

同样在F1单元格输入公式,自动溢出所有结果:

=UNIQUE(TOCOL(TEXTJOIN("|",TRUE,FILTER(A:A,A:A<>""),TRANSPOSE(FILTER(B:B,B:B<>"")),TRANSPOSE(FILTER(C:C,C:C<>"")),TRANSPOSE(FILTER(D:D,D:D<>"")),TRANSPOSE(FILTER(E:E,E:E<>""))),3))

公式拆解:

  • FILTER过滤空值,TRANSPOSE转置列成行来生成笛卡尔积
  • TEXTJOIN把每组组合的元素用"|"连接成单个字符串
  • TOCOL把多维结果转成一维列表,参数3用来忽略空值
  • UNIQUE去重得到最终的唯一组合

方法2:Power Query法(兼容多数Excel版本,适合大数据量)

如果你的Excel版本没有动态数组函数,或者数据量较大,Power Query更稳定:

  1. 选中A到E列的数据区域,点击数据选项卡 → 从表格/区域(弹出对话框时,根据情况勾选“我的表格有标题”)
  2. 在Power Query编辑器中,选中所有列,点击转换选项卡 → 逆透视列 → 逆透视其他列,把所有列转成“属性”和“值”两列
  3. 点击转换选项卡 → 分组依据:
    • 分组依据选择“属性”
    • 新列名设为“列表”
    • 操作选择“所有行”,点击确定后会得到每列对应的数值列表
  4. 点击添加列 → 自定义列,输入公式(把[A]到[E]换成你实际的列标题):
    =List.Product({[A], [B], [C], [D], [E]})
    
  5. 展开这个自定义列,再点击添加列 → 自定义列,输入公式把组合元素连接起来:
    =Text.Combine([自定义列], "|")
    
  6. 选中新生成的组合列,点击主页 → 删除重复项
  7. 最后点击主页 → 关闭并上载,把结果导出到新工作表,再复制到F列即可

内容的提问来源于stack exchange,提问作者Wiiliam Bonney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:35:16