使用不存在的值

时间:2018-03-20 13:45:33

标签: excel indexing excel-formula match lookup

我在Excel中有以下格式的数据:

Column A    Column B
20/03/2018  300
21/03/2018  200
22/03/2018  100
23/03/2018  90
24/03/2018  300
25/03/2018  200
26/03/2018  100
27/03/2018  50
28/03/2018  90
29/03/2018  100
30/03/2018  110
31/03/2018  120

我想按时间顺序得到B的最小值永远不会低于99的日期。这是上面的例子,将在3月29日发生。

如果我尝试使用它:

=INDEX(A:A,MATCH(99,B1:B12,-1))
返回的值是22/03/2018,因为它是第一次找到,从上到下搜索。

在这种情况下,能够进行反向匹配(例如从范围的从下到上搜索的匹配)是完美的,但此选项不可用。我已经看到可以使用查找函数进行反向匹配,但在这种情况下,我需要提供一个实际存在于我的数据集中的值(99不起作用)。

我找到的解决方法是添加第三列,如下所示(B的即将到来的值的最小值)和顶部的索引匹配。

Column A    Column B  Column C
20/03/2018  300       50
21/03/2018  200       50
22/03/2018  100       50
23/03/2018  90        50
24/03/2018  300       50
25/03/2018  200       50
26/03/2018  100       50
27/03/2018  50        50
28/03/2018  90        90
29/03/2018  100       100
30/03/2018  110       110
31/03/2018  120       120

有没有办法在没有第三列的情况下实现这一目标?

2 个答案:

答案 0 :(得分:2)

AGGREGATE函数适用于以下问题:

=AGGREGATE(14,4,(B2:B13<99)*A2:A13,1)+1

这些数字参数是什么?

  
      
  • 14告诉函数复制LARGE函数
  •   
  • 4忽略没有值(此函数可以忽略错误值和其他内容)
  •   

更多信息here。我检查了它的工作原理如下:

enter image description here

如果您的日期并不总是连续的,则需要在函数中添加更多内容:

=INDEX(A1:A12,MATCH(AGGREGATE(14,6,(B1:B12<99)*A1:A12,1),A1:A12,0)+1)

答案 1 :(得分:1)

=INDEX(A1:A12,LARGE(IF(B1:B12<=99,ROW(B1:B12)+1),1))

这是一个数组公式( Ctrl + Shift + 输入,但仍在公式栏中)

在结果下面的行1中构建一个小于或等于99的数组。然后返回大的索引的最大行数。