excel 如何将两列列表转换为矩阵

pn9klfpd  于 2023-06-07  发布在  其他
关注(0)|答案(4)|浏览(455)

我正试图将两列列表转换为一个矩阵,如所附图像所示。矩阵的y轴包含来自列表的第一列的唯一项,而矩阵的x轴包含来自列表的第二列的唯一项。该矩阵填充有列表中对应的x轴和y轴项的出现次数。列表中大约有10,000行。

我用这种“不太聪明”的方式来做这件事。首先,I CONCAT两列中的项,然后COUNTED它们在列表中的出现次数。然后我使用Excel函数删除重复项并粘贴为矩阵。接下来,我用CONCAT填充矩阵以唯一标识单元格。最后,我使用VLOOKUP从列表中查找值。有没有更好、更聪明的方法来做到这一点?TIA

wmtdaxz3

wmtdaxz31#

=LET(
x,B1:B11,
y,A1:A11,
ux,TOROW(UNIQUE(x)),
uy,UNIQUE(y),
HSTACK(VSTACK("",uy),
VSTACK(ux,MMULT(--(TOROW(y)=uy),--(x=ux)))))

其中MMULT是创建计数的2D溢出的实际计算。VSTACK/HSTACK只是围绕头文件构建的

nfg76nw0

nfg76nw02#

数据透视表将为您做这件事。您可以使用Microsoft 365动态公式来实现这一点。给予一下-

=LET(
x,SORT(UNIQUE(A1:A11)),
y,TOROW(SORT(UNIQUE(B1:B11))),
z,MAKEARRAY(ROWS(x),COLUMNS(y),
LAMBDA(r,c,
COUNTIFS(A1:A11,INDEX(x,r),B1:B11,INDEX(y,c)))),
VSTACK(HSTACK("",y),HSTACK(x,z)))

nwlls2ji

nwlls2ji3#

使用LAMBDA()公式可以使其更详细。因此,您只需要指定输入范围和公式来处理LAMBDA()中的其他计算。

=LAMBDA(input1,input2,
LET(
x,SORT(UNIQUE(input1)),
y,TOROW(SORT(UNIQUE(input2))),
z,MAKEARRAY(ROWS(x),COLUMNS(y),
LAMBDA(r,c,
IFERROR(ROWS(FILTER(input1,(input1=INDEX(x,r))*(input2=INDEX(y,c)))),0)
)),
VSTACK(HSTACK("",y),HSTACK(x,z))))(A1:A11,B1:B11)

crcmnpdw

crcmnpdw4#

使用COUNTIFS()的另一种选择

·单元格D1中使用的公式

=LET(α,A1:A11,
β,B1:B11,
φ,TOROW(SORT(UNIQUE(β))),
δ,UNIQUE(α),
VSTACK(HSTACK("",φ),
HSTACK(δ,COUNTIFS(α,δ,β,φ))))

相关问题