假设我有 3 列带标签
- A B C D
- ABCDE
- 1 2 3 4 5 6 7 8 9 10
有没有一种快速简便的方法来创建一个包含所有排列的空表?即
- 一 - 一 - 1
- A - a - 2
- ....
- D - e - 10
答案1
答案2
编辑:
使用 Office 365,我们可以使其更具弹性:
=LET(
rng,A1:C10,
rw,ROWS(rng),
clm,COLUMNS(rng),
arr,MAKEARRAY(rw^clm,clm,LAMBDA(a,b,INDEX(rng,INT(MOD(a, rw ^ b) / (rw^ b / rw))+1,b)&"")),
end,FILTER(arr,MMULT(--(arr=""),SEQUENCE(clm,,1,0))=0),
SORT(IF(ISNUMBER(--end),--end,end),SEQUENCE(,clm)))
只要#ofRows^#ofColumns
不超过工作表上的行数,这将采用任意大小的范围:
然后对于连接版本我们使用 BYROW 和 TEXTJOIN:
=LET(
rng,A1:C10,
rw,ROWS(rng),
clm,COLUMNS(rng),
arr,MAKEARRAY(rw^clm,clm,LAMBDA(a,b,INDEX(rng,INT(MOD(a, rw ^ b) / (rw^ b / rw))+1,b)&"")),
end,FILTER(arr,MMULT(--(arr=""),SEQUENCE(clm,,1,0))=0),
rd,SORT(IF(ISNUMBER(--end),--end,end),SEQUENCE(,clm)),
BYROW(rd,LAMBDA(p,TEXTJOIN(" - ",,p))))
原始旧版本:
您可以使用公式来实现此目的:
=IFERROR(INDEX($A$1:$A$4,INT((ROW(1:1)-1)/((COUNTA(B:B)*(COUNTA(C:C)))))+1)&" - "&INDEX(B:B,MOD(INT((ROW(1:1)-1)/COUNTA(C:C)),COUNTA(B:B))+1)&" - "&INDEX(C:C,MOD((ROW(1:1)-1),COUNTA(C:C))+1),"")