GoogleSheets INDEX MATCH为日期范围

时间:2017-04-03 20:36:48

标签: indexing google-sheets

在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是我想在之间搜索的日期范围的开始和停止。

以下是一些虚拟数据的示例:

enter image description here

现在公式正在运作...... sorta。它返回与最小绝对最近值相关联的帐户名,但不是从以下指定的日期范围返回:

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

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

从这个例子中应该返回的正确答案是“C”,来自单元格B4。

这个公式我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

match()的第3个参数应为-1, 0, or 1。所以基本上(A2:A>=G2)*(A2:A<=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