数组公式多个条件和日期之间

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

我正在尝试在 Google Sheets 中编写自动填充数组公式。该公式应该使用 4 个标准从查找表到主表中查找价格。我觉得这是我应该能够轻松完成的事情,但日期让我失望了。

我可以使用索引匹配、过滤器、查询和一些组合来完成此操作,但我似乎无法弄清楚如何以自动填充的方式执行此操作,因为行将定期添加到表中。

信息:

  • 这本质上是一个 4 个条件查找(水果、日期大于开始日期、日期小于结束日期、数量)
  • 定价没有模式
  • 价格位于查找表的第 1、2、3、4、5、6 列下
  • 主表中的日期应位于查找表中的开始日期和结束日期列之间

工作表链接

主表 - 填写查找表中的价格列 |水果|日期 |数量 |价格| | -------- | -------- | -------- | -------- | |苹果| 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(新功能),但似乎无法自动填充任何内容。

在此阶段更喜欢使用公式而不是应用程序脚本。

google-sheets google-sheets-formula array-formulas
2个回答
1
投票

您可以尝试:

=map(A3:A,B3:B,C3:C,lambda(a,b,c,if(a="",,+filter(filter(Lookup!D2:I,Lookup!D1:I1=c),Lookup!A2:A=a,Lookup!B2:B<b,Lookup!C2:C>b))))

enter image description here


0
投票

基于 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
            )
        )
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.