【问题标题】:GoogleSheets INDEX MATCH for closest value between date range谷歌表格索引匹配日期范围之间最接近的值
【发布时间】:2017-04-03 20:36:47
【问题描述】:

在 Google 表格中,我尝试使用 Excel 中的 INDEX MATCH 返回与日期范围之间的最小绝对最接近值关联的帐户名称。

=ARRAYFORMULA(INDEX(B2:B,MATCH(MIN(ABS(C2:C-$G$5)),ABS(C2:C-$G$5),(A2:A>=G2)*(A2:A<=G3))))

以下是数据值:

  • A 列是评估的日期范围
  • B 列是我要检索的名称
  • C 列是将从猜测中减去的数字,以找到最小的绝对差值。
  • G5 是猜测。
  • G2 和 G3 是我想要搜索的日期范围的开始和结束。

这是一些虚拟数据的示例:

现在这个公式正在起作用......有点。它正在返回与最小绝对最接近值关联的帐户名称,但不是来自以下指定的日期范围:

(A2:A>=G2)*(A2:A<=G3)

这是返回帐户“A”,因为它是第一个值并且最接近猜测,但它在 G2 和 G3 指定的日期范围之外。

此示例应返回的正确答案是单元格 B4 中的“C”。

这个公式我做错了什么?

谢谢!

【问题讨论】:

    标签: indexing google-sheets


    【解决方案1】:

    match() 的第三个参数应该是-1, 0, or 1。所以基本上你的公式中的(A2:A&gt;=G2)*(A2:A&lt;=G3) 部分什么都不是。如果要在某些范围之间进行匹配,可以使用filter()。所以你的公式应该是这样的。

    =arrayformula(
       index(
         filter(B2:B, A2:A >= $G$2, A2:A <= $G$3), 
         match(
           min(abs(filter(C2:C, A2:A >= $G$2, A2:A <= $G$3) - $G$5)), 
           abs(filter(C2:C, A2:A >= $G$2, A2:A <= $G$3) - $G$5), 
           0
         )
       )
     )
    

    我测试了它并且它有效。样品表是here

    【讨论】:

    • 巨大!谢谢!
    猜你喜欢
    • 2019-04-11
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多