在 excel 中查找矩阵中前 3 个值的对应行 ID 和列 ID

Find the corresponding row ID and column ID of top 3 values in a matrix in excel

提问人:vp_050 提问时间:8/10/2023 最后编辑:Mayukh Bhattacharyavp_050 更新时间:8/10/2023 访问量:87

问:

我有以下矩阵。

enter image description here

我想接收的输出是。

enter image description here

我已经实现了查找前 3 个值的功能。我尝试在一个公式中实现和函数以接收上述输出,但没有成功。我们如何在excel中获取上述输出?LARGE()INDEX()MATCH()

Excel 排序 索引 excel-formula

评论

2赞 user11222393 8/10/2023
可以肯定的是,值不是唯一的,并且可能有 2 个具有不同坐标的相同值?
2赞 Mayukh Bhattacharya 8/10/2023
我认为您的结果表有一个错别字,即 will be 和 not73RowID53

答:

4赞 Mayukh Bhattacharya 8/10/2023 #1

请尝试使用以下公式:

enter image description here


• 细胞中使用的配方H1

=LET(
     a,TOCOL(B2:F6),
     b,TOCOL(IFNA(A2:A6,SEQUENCE(,ROWS(B2:F6)))),
     c,TOCOL(IFNA(B1:F1,SEQUENCE(ROWS(B2:F6)))),
     d,TAKE(SORT(HSTACK(a,b,c),1,-1),3),
     VSTACK({"Rank","Value","RowID","ColID"},
     HSTACK(SEQUENCE(ROWS(d)),d)))

这是另一个替代公式,但字节数也更多,它使用辅助函数LAMBDA( )BYROW( )

=LET(
     a,A1:F6,
     b,TAKE(SORT(TOCOL(DROP(a,1,1)),,-1),3),
     c,BYROW(b,LAMBDA(m,CONCAT(REPT(DROP(a,1,-5)&"|"&TAKE(a,1,-5),m=DROP(a,1,1))))),
     d,HSTACK(SEQUENCE(ROWS(b)),b,TEXTBEFORE(c,"|"),TEXTAFTER(c,"|"))+0,
     VSTACK({"Rank","Value","RowID","ColID"},d))

比前面的字节少一点:

=LET(
     a,A2:A6,
     b,B1:F1,
     c,B2:F6,
     d,TAKE(SORT(TOCOL(c),,-1),3),
     e,SEQUENCE(ROWS(d)),
     HSTACK(VSTACK("Rank",e),REDUCE({"Value","RowID","ColID"},d,LAMBDA(x,y,
     VSTACK(x,HSTACK(y,CONCAT(REPT(a,y=c)),CONCAT(REPT(b,y=c)))+0)))))

评论

0赞 vp_050 8/10/2023
在这种情况下,我们如何排除对角线元素?
0赞 Mayukh Bhattacharya 8/10/2023
你@vp_050对此提出问题?
2赞 JvdV 8/10/2023 #2

这里有一个替代方法:

enter image description here

公式:H1

=VSTACK({"Rank","Value","RowID","ColID"},HSTACK({1;2;3},TAKE(SORT(--TEXTSPLIT(TEXTAFTER("|"&TOCOL(B2:F6&"|"&A2:A6&"|"&B1:F1),"|",{1,2,3}),"|"),,-1),3)))

评论

0赞 vp_050 8/25/2023
如果任何单元格是空白的或有 NA,我们如何忽略上述公式中的这些单元格?