Excel:需要不寻常的查找function帮助(sorting列不同于查找列)

我无法在Excel中构build不寻常的查找公式。

通常情况下,我会使用VLOOKUP(),但是缺点是我想在一列中查找列中的数字。 Vlookup只能在已sorting的列本身上查找事物。

情况如下:

  • 该表在B列上升序排列。
  • 对于一个给定的参数P,现在我想要find第一个A值,从顶部开始往下,大于或等于参数P.
  • 该函数应该返回相应的B值。

表(部分closures,完整的表格要大得多):

AB 1 640 4.5 2 1600 7.0 3 640 7.5 4 1280 12.0 5 1920 16.5 6 2560 21.0 7 1600 19.8 8 3200 26.8 9 4800 33.8 

例如 ,假设我的参数是1100,那么我希望我的公式返回7.0,因为在列A中向下search时大于或等于1100的第一项是1600,相应的B值是7.0

我已经尝试使用Array Formula (也称为“ctrl-shift-enter formula's”)的运气,并构build如下所示:

 {=INDEX(table; MATCH(MIN(IF(columnA-$C1>=0;columnA;FALSE)); IF(columnA-$C1>=0;columnA;FALSE); 0); 2)} 

C1包含我的参数, 表格的范围是A1:B9,而columnA的范围是B1:B9

但是这不起作用(在上面的例子中,它返回12.0,因为1280被MIN()函数选中)。

解决scheme我不想使用:我可以写一些VBA可以通过表,但我不想这样做(由于恼人的“macros警告”,并且因为Mac上的Excel不再支持VBA了)

任何人有任何线索?

您可以使用

 {=INDEX(B1:B9,MIN(IF(A1:A9>C1,ROW(A1:A9),FALSE)))} 

请注意,我正在使用英国的英国语言设置 – 您必须更改公式以符合您的语言环境,用分号replace逗号等。

如果你不想要一个数组公式,你可以尝试= OFFSET($ C $ 5,MATCH($ A $ 17,B5:B13),0)其中C5是你的开始B列,B5:B13是你的A列和A17是你值得匹配的。

忍者编辑:这是一个版本,适用于您的规格的小于或等于位。 = $ OFFSET($ C $ 5,IF(ISNA(MATCH($ A $ 17,B5:B13,0)),IF(ISNA(MATCH($ A $ 17,B5:B13)),0,MATCH($ A $ 17,B5 :B13)),MIN(MATCH($ A $ 17,B5:B13,0)-1,MATCH($ A $ 17,B5:B13))),0)

假设数据表在范围A2:B10,与您在单元格B1中search值,下面似乎工作:

  =IF(B1<A2,B2,IF(ISNA(VLOOKUP(B1,$A$2:$B$10,2,FALSE)),INDEX(B2:B10,MATCH(B1,A2:A10)+1),VLOOKUP(B1,$A$2:$B$10,2,FALSE))) 

我编辑这个来考虑当查找值小于列表中的任何值。