动态数组公式来汇总每周数据(如数据透视表)

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

我一直在与 ChatGPT 较量(并失败了),试图找到这个问题的答案。

这是 Sheet1 的 A2:D43021 中显示的每周数据示例。

日期 艺术家 歌曲 本周
1/3/1970 戴安娜·罗斯和至尊乐队 总有一天我们会在一起 1
1/3/1970 杰克逊5 我想要你回来 2
1/3/1970 詹姆斯·布朗 现在是不是很时髦(第 1 部分) 3
1/3/1970 Jr。沃克与全明星 这些眼睛 4
1/3/1970 格拉迪斯·奈特和皮普斯 友谊列车 5
1/3/1970 马文·盖伊和塔米·特雷尔 你给了我什么 6
1/3/1970 约翰尼·泰勒 爱骨头 7
1/10/1970 杰克逊5 我想要你回来 1
1/10/1970 戴安娜·罗斯和至尊乐队 总有一天我们会在一起 2
1/10/1970 詹姆斯·布朗 现在是不是很时髦(第 1 部分) 3
1/10/1970 Jr。沃克与全明星 这些眼睛 4
1/10/1970 约翰尼·泰勒 爱骨头 5
1/10/1970 马文·盖伊和塔米·特雷尔 你给了我什么 6
1/10/1970 格拉迪斯·奈特和皮普斯 友谊列车 7

在 Sheet2 上,我想在第 2 行到第 4557 行上显示这样的数据。

第一次约会 第一个POS 艺术家 歌曲 01/03/70 01/10/70
戴安娜·罗斯和至尊乐队 总有一天我们会在一起 1 2
杰克逊5 我想要你回来 2 1
詹姆斯·布朗 现在是不是很时髦(第 1 部分) 3 3
Jr。沃克与全明星 这些眼睛 4 4
格拉迪斯·奈特和皮普斯 友谊列车 5 7
马文·盖伊和塔米·特雷尔 你给了我什么 6 6
约翰尼·泰勒 爱骨头 7 5

目前,A 列和 B 列为空。单元格 E1 到 TF1 填充有 Sheet1 上 DATE 列中的唯一值。 C 列和 D 列填充有 Sheet1 上 ARTIST 和 SONG 列中的唯一值。

我已使用 Power Query 创建数据透视表,但我想直接从 Sheet1 进行更多计算。

我的电脑功率太低,无法处理每个单元格中的查找公式。

我已经在单元格 E2 中使用了此公式的版本,但我无法掌握垂直和水平填充的逻辑。

=LET(
    data,'Sheet1'!A2:D43021,
    artist, $C$2:$C$4557,
    song, $D$2:$D$4557,
    datehdr, $E$1:$TF$1,
    BYROW(artist&song,
        LAMBDA(row,
            MATCH(
                TRUE,
                (row=INDEX(data,,2)&INDEX(data,,3))*(INDEX(datehdr,,1)=INDEX(data,,1)),
                0
            )
        )
    )
)

如有任何建议,我们将不胜感激。

excel-formula dynamic-arrays excel-365
1个回答
0
投票

尝试使用以下公式,使用

LAMBDA()
辅助函数
MAKEARRAY()
以下将生成整个数组,如您的OP中提到的:

enter image description here


Sheet2

 单元格 
C1

中使用的公式
=LET(
     _Data, Sheet1!A2:D15,
     _ArtistSong, CHOOSECOLS(_Data,2,3),
     _Uniq, UNIQUE(_ArtistSong),
     _Date, TAKE(_Data,,1),
     _UniqD, TOROW(UNIQUE(_Date)),
     _Output, MAKEARRAY(ROWS(_Uniq),COLUMNS(_UniqD), LAMBDA(r,c,
              TOROW(FILTER(TAKE(_Data,,-1), (INDEX(_Uniq,r,1)=INDEX(_ArtistSong,,1))*
               (INDEX(_Uniq,r,2)=INDEX(_ArtistSong,,2))*(INDEX(_UniqD,c)=_Date),"")))),
     VSTACK(HSTACK(Sheet1!B1:C1,_UniqD),HSTACK(_Uniq, _Output)))

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