我有这样的数据,
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 的本机排序功能,您需要修改/修改公式才能应用
SORT()
函数但不应用排序功能。
这是您可以尝试实现所需输出的一种方法:
• 单元格中使用的公式 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)))