求助:Excel中生成某列所有以/分隔的组合的公式
Excel生成列元素所有组合的公式方案
适合Excel 365/2021(支持动态数组)
假设你的有效数据在A列(比如A1到A4是SE、XE、SX、EX),直接用下面的动态数组公式,就能自动生成所有非空元素的组合(包括2个、3个直到全部元素的组合):
=LET( data, A1:A4, non_empty, FILTER(data, data<>""), len, COUNTA(non_empty), sequences, SEQUENCE(2^len - 1), binary, DEC2BIN(sequences, len), combine, LAMBDA(x, TEXTJOIN("/", TRUE, IF(MID(x, SEQUENCE(len), 1)="1", non_empty, ""))), BYROW(binary, combine) )
简单说明:
- 把公式里的
A1:A4改成你实际的数据范围就行,会自动过滤空白单元格。 - 原理是用二进制数对应每个元素是否被选中,再把选中的元素用
/拼接起来,一次性生成所有组合。
旧版Excel(无动态数组,比如2019及更早)
没法直接一键生成,得用辅助列配合:
- 生成二进制标识:在B1输入
=DEC2BIN(ROW()-1, COUNT(A:A)),下拉到第2^COUNT(A:A)-1行(比如A列有4个元素,就下拉到15行)。 - 生成组合:在C1输入下面的公式,按
Ctrl+Shift+Enter(数组公式),再下拉填充:
=TEXTJOIN("/", TRUE, IF(MID(B1, COLUMN(A:Z), 1)="1", $A$1:$A$4, ""))
- 注意把
$A$1:$A$4改成你的数据范围,如果数据超过26个,把COLUMN(A:Z)换成COLUMN(A:ZZ)。
内容的提问来源于stack exchange,提问作者Phani Kalakonda
相关产品推荐
相关产品推荐

