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

如何用Excel基础函数生成多列唯一值的笛卡尔积组合表?

用Excel基础函数生成多列唯一值的全组合(笛卡尔积)

步骤1:提取各列的非空唯一值

先把源数据中每列的非空唯一值单独提取到空白区域,方便后续引用:
假设源数据位于A1:D4(表头A1:D1,数据A2:D4):

  • Excel 365/2021及以上版本:用UNIQUE函数快速提取
    • 列1唯一值:在F2输入=UNIQUE(A2:A4),自动返回a1,a2,a3
    • 列2唯一值:在G2输入=UNIQUE(B2:B4,TRUE)(第二个参数TRUE忽略空值),返回b1,b2
    • 列3唯一值:在H2输入=UNIQUE(C2:C4,TRUE),返回c1,c2
    • 列4唯一值:在I2输入=UNIQUE(D2:D4,TRUE),返回d1,d2
  • 旧版Excel(无UNIQUE函数):用数组公式提取
    • 列1唯一值:在F2输入=INDEX(A:A, SMALL(IF(MATCH(A$2:A$4,A$2:A$4,0)=ROW(A$2:A$4)-ROW(A$2)+1,ROW(A$2:A$4),""),ROWS(F$2:F2))),按Ctrl+Shift+Enter完成输入,下拉直到出现#NUM!后删除错误行
    • 其他列同理,将公式中的A列替换为对应列(B、C、D)即可

步骤2:用基础函数生成全组合

在空白区域(比如A7:D7设为新表头,A8开始放结果)输入以下公式,然后下拉到第31行(总组合数为3×2×2×2=24条,A8到A31共24行):

  • A8(对应column1):
    =INDEX($F$2:$F$4, INT((ROW()-8)/(COUNTA($G$2:$G$3)*COUNTA($H$2:$H$3)*COUNTA($I$2:$I$3)))+1)
    
  • B8(对应column2):
    =INDEX($G$2:$G$3, INT(MOD((ROW()-8), COUNTA($G$2:$G$3)*COUNTA($H$2:$H$3)*COUNTA($I$2:$I$3))/(COUNTA($H$2:$H$3)*COUNTA($I$2:$I$3)))+1)
    
  • C8(对应column3):
    =INDEX($H$2:$H$3, INT(MOD((ROW()-8), COUNTA($H$2:$H$3)*COUNTA($I$2:$I$3))/COUNTA($I$2:$I$3))+1)
    
  • D8(对应column4):
    =INDEX($I$2:$I$3, MOD((ROW()-8), COUNTA($I$2:$I$3))+1)
    

公式说明:

  • COUNTA统计对应列唯一值的数量,无需手动输入固定数字,适配值数量变化
  • ROW()-8计算当前行相对于结果起始行的偏移量(若起始行不是8,替换为对应行号即可)
  • INT与MOD配合实现对各列唯一值的循环遍历,自动生成所有可能的组合

完成后即可得到你需要的全组合表格,全程无需手动复制粘贴。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:35:30