根据Excel中另一列中的值的总和对列中的类别进行排名

dluptydi  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(96)

假设Sheet1中有4个列,其中col1作为类别,col2、col3和col4是值列,如下所示。在工作表2中,我们希望获得所选变量列中前2个类别的最高值总和。
片1

片2

我已经使用了下面的代码来查找表的顶部值,而不是每个类别,有什么修改的建议吗?

=TAKE(SORT(HSTACK(INDEX(Sheet1!B2:D11,,MATCH(H1,Sheet1!B1:D1,0)),CHOOSECOLS(Sheet1!A2:D11,1)),1,-1),5)

如果VAR1在用户输入中,则需要输出:

注意:公式不应对sheet1中的列名敏感。

qjp7pelc

qjp7pelc1#

根据OP编辑的当前帖子进行更新:

尝试以下公式:

=HSTACK({1;2},
  TAKE(SORT(UNIQUE(HSTACK(SUMIFS(INDEX(Sheet1!B2:D11,,XMATCH(H1,Sheet1!B1:D1)),
  Sheet1!A2:A11,Sheet1!A2:A11),Sheet1!A2:A11)),1,-1),2))

或者

=LET(
     a, Sheet1!A2:A11,
     HSTACK({1;2},TAKE(SORT(UNIQUE(HSTACK(SUMIFS(
     XLOOKUP(H1,Sheet1!B1:D1,Sheet1!B2:D11),a,a),a)),1,-1),2))

或者

=LET(
     a, Sheet1!A2:A11,
     HSTACK({1;2},TAKE(SORT(UNIQUE(HSTACK(
     SUMIFS(INDEX(Sheet1!B2:D11,,XMATCH(H1,Sheet1!B1:D1)),a,a),a)),1,-1),2)))
  • 下面显示的解决方案是指OP的原始帖子,其中是工作解决方案。然而,OP在sheet1的标题name中有特殊字符,这在帖子中没有提到。

·单元格D2中使用的公式

=LET(
     a, UNIQUE(A2:A12),
     b, TAKE(SORT(HSTACK(a,SUMIFS(B2:B12,A2:A12,a)),2,-1),2),
     VSTACK({"Rank","V1","V2"},HSTACK({1;2},b)))

你也可以用MMNode()来代替SUMIFS(),MMNode()比SUMIFS()更占用资源,所以后者会更简单更高效,仍然和MMNode()共享方法。

·单元格D2中使用的公式

=LET(
     a, UNIQUE(A2:A12),
     b, TAKE(SORT(HSTACK(a,MMULT(N(TOROW(A2:A12)=a),B2:B12)),2,-1),2),
     VSTACK({"Rank","V1","V2"},HSTACK({1;2},b)))

或者

·单元格D2中使用的公式

=HSTACK({1;2},
 TAKE(SORT(UNIQUE(HSTACK(A2:A12,
 SUMIFS(B2:B12,A2:A12,A2:A12))),2,-1),2))

或者

·单元格D2中使用的公式

=HSTACK({"1";2},
 TAKE(SORT(UNIQUE(HSTACK(A2:A12,
 MMULT(N(A2:A12=TOROW(A2:A12)),B2:B12))),2,-1),2))

编辑:

正如执行处在下面的评论中所提到的:

  • 如示例中所示,我们是否可以将要考虑用于**排序的列作为用户输入,如所需输出的单元格E2中所示 *

·单元格D2中使用的公式

=HSTACK({1;2},
 TAKE(SORT(UNIQUE(HSTACK(A2:A12, 
 SUMIFS(B2:B12,A2:A12,A2:A12))),
 XMATCH(D1,A1:B1),-1),2))

更新:

OP在评论中提到:

  • 如果数据在同一工作簿的另一个工作表中,则此代码会出错。使用的公式示例从另一个工作表读取数据 *

Excel可从**here**下载
根据OP的评论:

  • 当列名包含特殊字符(如V2_AB)时会发生错误 *

=HSTACK({1;2},TAKE(SORT(UNIQUE(HSTACK(Sheet1!$A$2:$A$12,
 SUMIFS(Sheet1!$B$2:$B$12,Sheet1!$A$2:$A$12,Sheet1!$A$2:$A$12))),
 XMATCH(E1,TEXTBEFORE(Sheet1!$A$1:$B$1,"_",,,,Sheet1!$A$1:$B$1)),-1),2))

相关问题