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

Google Sheets中实现N×N表连接生成笛卡尔积的方法问询

Google Sheets实现两个列表全组合(笛卡尔积)操作方法

首先明确前提:假设你存放a/b/c的第一个列表在A1:A3区域,存放x/y/z的第二个列表在B1:B3区域,可根据你的实际数据范围调整公式里的单元格引用。

方法1:新版Google Sheets(推荐,最简单)

直接在空白单元格输入以下公式,回车即可自动生成所有组合,无需手动下拉填充:

  • 如果需要输出两列(第一列放a/b/c,第二列放x/y/z),使用公式:
    =ARRAYFORMULA(SPLIT(FLATTEN(A1:A3&"|"&TRANSPOSE(B1:B3)),"|"))
  • 如果需要直接输出空格拼接的单列(和你示例的a x格式完全一致),使用简化公式:
    =ARRAYFORMULA(FLATTEN(A1:A3&" "&TRANSPOSE(B1:B3)))

公式逻辑说明:

  • TRANSPOSE(B1:B3):将第二个纵向的列表转为横向,方便和第一个纵向列表做交叉拼接
  • A1:A3&" "&TRANSPOSE(B1:B3):自动生成所有元素交叉拼接的N×N二维矩阵
  • FLATTEN():将二维矩阵压平为一维单列
  • 外层ARRAYFORMULA():触发数组运算,自动输出所有结果

方法2:旧版Google Sheets(无FLATTEN函数可用时)

使用以下通用公式,同样回车即可生成所有空格拼接的组合:
=ARRAYFORMULA(IFERROR(INDEX(A1:A3,CEILING(ROW(INDIRECT("1:"&ROWS(A1:A3)*ROWS(B1:B3)))/ROWS(B1:B3),1))&" "&INDEX(B1:B3,MOD(ROW(INDIRECT("1:"&ROWS(A1:A3)*ROWS(B1:B3)))-1,ROWS(B1:B3))+1)))

调整提示

如果你的两个列表行数不固定,直接把公式里的A1:A3替换为FILTER(A:A,A:A<>"")、B1:B3替换为FILTER(B:B,B:B<>""),即可自动识别两列里的所有非空内容生成组合,不需要每次修改引用范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:03