Excel中按类别排序

问题描述 投票:0回答:1

我有这样的数据,

song   | singer_one      | singer_two        |  2024-12-20 | 2024-12-21
-----------------------------------------------------------------------
song_1 | singer_name_one | singer_name_three |    5        |     3
song_2 | singer_name_two | singer_name_four  |    3        |     2

现在我想让时间系列歌手明智,

singer            | 2024-12-20 | 2024-12-21
--------------------------------------------
singer_name_one   |    5       |      3
singer_name_two   |    3       |      2
singer_name_three |    5       |      3
singer_name_four  |    3       |      2

我可以用这样的东西得到这个,

=UNIQUE(VSTACK(UNIQUE(music!I19:I54000),UNIQUE(music!J19:J54000)))

对于每一行,

=SUMPRODUCT((music!AG$19:AG$5000) * (daily_singerwise!$A4=music!$I$19:$I$5000))

现在我向其中添加一个总和列

singer            | sum |  2024-12-20 | 2024-12-21
----------------------------------------------------
singer_name_one   |  8  |       5     |      3
singer_name_two   |  5  |       3     |      2
singer_name_three |  8  |       5     |      3
singer_name_four  |  5  |       3     |      2

接下来我想根据降序对它进行排序,我该如何实现呢? 好像我排序然后我收到错误

You can't change part of an array.

是否有其他方法可以根据降序总和对所有列进行排序?

excel
1个回答
0
投票

您收到的错误绝对是正确的,您无法更改数组的一部分,这意味着,当您在单元格中应用动态数组公式时,您将无法应用 Excel 的本机排序功能,您需要修改/修改公式才能应用

SORT()
函数但不应用排序功能。

这是您可以尝试实现所需输出的一种方法:

enter image description here


• 单元格中使用的公式 B5

=LET(
     a, B2:C3,
     b, D2:E3,
     c, SEQUENCE(COLUMNS(a)),
     d, SEQUENCE(,ROWS(b)),
     e, TOCOL(a,,1),
     f, CHOOSEROWS(b,TOCOL(IF(c,d))),
     VSTACK(HSTACK("singer","sum",D1:E1),
     SORT(HSTACK(e, BYROW(f,SUM), f),2,-1)))

上面是一个单一的动态数组公式,对于总和,我使用了

ETA LAMBDA()
,即
BYROW()
不需要
LAMBDA()
构造,但是如果您的Excel版本不支持,那么可以使用以下

=LET(
     a, B2:C3,
     b, D2:E3,
     c, SEQUENCE(COLUMNS(a)),
     d, SEQUENCE(,ROWS(b)),
     e, TOCOL(a,,1),
     f, CHOOSEROWS(b,TOCOL(IF(c,d))),
     VSTACK(HSTACK("singer","sum",D1:E1),
     SORT(HSTACK(e, BYROW(f,LAMBDA(x,SUM(x))), f),2,-1)))

© www.soinside.com 2019 - 2024. All rights reserved.