问题描述
我对 Excel 还很陌生,我正在尝试找到一种方法来自动生成 4 个变量(A、B、C、D)的所有可能组合(顺序不重要)和 3 个值(1、2、3)每个。
所以只有 12 个可能的变量+值:
A1、A2、A3、B1、B2、B3、C1、C2、C3、D1、D2、D3
每个组合必须有每个变量的一个实例。
例如:
A1、B2、C3、D1 A2、B3、C1、D3
有 81 种不同的组合,我想将它们放在 81 行中,然后将公式向下拖动到下一列以应用于每一行。
excel中有没有公式可以做到这一点?我找到了一个公式,但它只列出了 12 种组合。
解决方法
下面是一个示例,说明如何使用 Base 生成数字,然后将它们与 A、B、C 和 D 连接起来:
=TEXTJOIN(",",{"A","B","C","D"}&MID(BASE(ROW()-1,3,4),{1,2,4},1)+1)
到目前为止,我已经在 Excel 365 中对其进行了测试。
也适用于 Excel 2019。
编辑
因此,在 Excel 2010 中,您不会有 textjoin (Excel 2019) 或 base (Excel 2013),并且必须这样做(有效地将您自己转换为 base 3):
="A""IENT(ROW()-1,27)+1&",B""IENT(MOD(ROW()-1,27),9)+1&",C""IENT(MOD(ROW()-1,9),3)+1&",D"&MOD(ROW()-1,3)+1
如果你有 Excel 365,你可以使用 Base 和 Sequence 并像溢出公式那样缩短一点:
=LET(x,BASE(SEQUENCE(81,1,0),"A"&MID(x,1)+1&",B"&MID(x,C"&MID(x,D"&MID(x,4,1)+1)
,
@GSerg #Excel 2010 A1
=REPT(TEXT(SUM(INT(MOD((ROW(A1)+{26,8,0})/{27,9,1}-1,3)+1)*10^{3,0}),"\A0\,\B0\,\C0\,\D0"),ROW()<82)