我一直在与 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
)
)
)
)
如有任何建议,我们将不胜感激。
尝试使用以下公式,使用
LAMBDA()
辅助函数MAKEARRAY()
以下将生成整个数组,如您的OP中提到的:
• 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)))