我正在尝试在 Google Sheets 中编写自动填充数组公式。该公式应该使用 4 个标准从查找表到主表中查找价格。我觉得这是我应该能够轻松完成的事情,但日期让我失望了。
我可以使用索引匹配、过滤器、查询和一些组合来完成此操作,但我似乎无法弄清楚如何以自动填充的方式执行此操作,因为行将定期添加到表中。
信息:
主表 - 填写查找表中的价格列 |水果|日期 |数量 |价格| | -------- | -------- | -------- | -------- | |苹果| 2021 年 1 月 10 日 | 5 | | |苹果| 2021 年 4 月 20 日 | 3 | | |橙色| 2021 年 7 月 19 日 | 5 | | |草莓| 2021 年 10 月 19 日 | 5 | | |葡萄| 2022 年 1 月 19 日 | 3 | | |香蕉| 2022 年 4 月 18 日 | 1 | | |橙色| 2022 年 7 月 11 日 | 1 | | |草莓| 2022 年 10 月 10 日 | 6 | | |葡萄| 2023 年 1 月 13 日 | 1 | | |香蕉| 2023 年 3 月 3 日 | 2 | |
查找表 |水果|开始日期 |结束日期 | 1 | 2 | 3 | 4 | 5 | 6 | | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | |苹果| 2019 年 1 月 1 日 | 2022 年 1 月 31 日 | 10 | 10 6 | 16 | 16 16 | 16 9 | 4 | |橙色| 2019 年 1 月 1 日 | 2022 年 1 月 31 日 | 4 | 11 | 11 1 | 6 | 11 | 11 17 | 17 |草莓| 2019 年 1 月 1 日 | 2022 年 1 月 31 日 | 16 | 16 14 | 14 17 | 17 14 | 14 1 | 6 | |葡萄| 2019 年 1 月 1 日 | 2022 年 1 月 31 日 | 20 | 11 | 11 10 | 10 15 | 15 20 | 3 | |香蕉| 2019 年 1 月 1 日 | 2022 年 1 月 31 日 | 7 | 1 | 20 | 8 | 2 | 9 | |苹果| 2022 年 2 月 1 日 | 9099 年 12 月 1 日 | 12 | 12 17 | 17 2 | 13 | 13 9 | 14 | 14 |橙色| 2022 年 2 月 1 日 | 9099 年 12 月 1 日 | 16 | 16 5 | 19 | 19 16 | 16 19 | 19 9 | |草莓| 2022 年 2 月 1 日 | 9099 年 12 月 1 日 | 19 | 19 5 | 2 | 2 | 19 | 19 11 | 11 |葡萄| 2022 年 2 月 1 日 | 9099 年 12 月 1 日 | 8 | 3 | 19 | 19 16 | 16 9 | 1 | |香蕉| 2022 年 2 月 1 日 | 9099 年 12 月 1 日 | 1 | 6 | 11 | 11 15 | 15 12 | 12 15 |
想要的结果 |水果|日期 |数量 |价格| | -------- | -------- | -------- | -------- | |苹果| 2021 年 1 月 10 日 | 5 | 9 | |苹果| 2021 年 4 月 20 日 | 3 | 16 | 16 |橙色| 2021 年 7 月 19 日 | 5 | 11 | 11 |草莓| 2021 年 10 月 19 日 | 5 | 1 | |葡萄| 2022 年 1 月 19 日 | 3 | 10 | 10 |香蕉| 2022 年 4 月 18 日 | 1 | 1 | |橙色| 2022 年 7 月 11 日 | 1 | 16 | 16 |草莓| 2022 年 10 月 10 日 | 6 | 11 | 11 |葡萄| 2023 年 1 月 13 日 | 1 | 8 | |香蕉| 2023 年 3 月 3 日 | 2 | 6 |
尝试过使用vlookup+match、filter、byrow+lambda(新功能),但似乎无法自动填充任何内容。
在此阶段更喜欢使用公式而不是应用程序脚本。
基于 rockinfreakshow 的答案,当查找中的结束日期为空时,此公式将起作用:
=MAP(
A2:A, B2:B, C2:C,
LAMBDA(a, b, c,
IF(
a = "", ,
+FILTER(
FILTER(Lookup!D2:I, Lookup!D1:I1 = c),
Lookup!A2:A = a,
Lookup!B2:B < b,
IF(Lookup!C2:C = "", DATE(2099,12,31), Lookup!C2:C) > b
)
)
)
)