我在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
有没有办法在没有第三列的情况下实现这一目标?
答案 0 :(得分:2)
AGGREGATE
函数适用于以下问题:
=AGGREGATE(14,4,(B2:B13<99)*A2:A13,1)+1
这些数字参数是什么?
14
告诉函数复制LARGE
函数4
忽略没有值(此函数可以忽略错误值和其他内容)
更多信息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的数组。然后返回大的索引的最大行数。