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)))
我编辑这个来考虑当查找值小于列表中的任何值。