【发布时间】:2009-12-15 14:36:21
【问题描述】:
我在 Excel 中构建不寻常的查找公式时遇到问题。
通常,我会使用 VLOOKUP(),但缺陷是我想从按另一个列排序的表中查找列中的数字。 Vlookup 只能在排好序的列本身上查找内容。
场景如下:
- 表格按 B 列升序排序。
- 对于给定的参数 P,我现在想找到第一个 A 值,从上到下,大于或等于该参数 P。
- 然后该函数应返回相应的 B 值。
表格(部分关闭,完整的表格要大得多):
A B
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列中向下搜索时大于或等于1100的第一个条目是1600,即对应的 B 值为 7.0
我用Array Formula's(也称为“ctrl-shift-enter 公式”)尝试了我的运气,并构造了这样的东西:
{=INDEX(table;
MATCH(MIN(IF(columnA-$C1>=0;columnA;FALSE));
IF(columnA-$C1>=0;columnA;FALSE);
0);
2)}
C1 包含我的参数,table 范围 A1:B9,columnA 范围 B1:B9
但这不起作用(在上面的示例中,它返回 12.0,因为 MIN() 函数选择了 1280)。
我不想使用的解决方案: 我可以写一些 VBA 来遍历表格,但我不想这样做(因为烦人的“宏警告”,而且 Mac 上的 Excel 不再支持 VBA)
谁有线索?
【问题讨论】:
-
如果是我,我可能会尝试使用数据透视表或使用 MS Access 来查询数据,因为它们可以更好地处理“查询内容”和数据聚合。但是,也许这不是您正在寻找的解决方案类型。
-
@Ben:确实没有。数据透视表非常有用,但是当您不每天使用它们时,我发现它们有点棘手(对我来说就是这种情况)。而且我想将解决方案/问题保留在一个程序中,不需要访问 :-)
标签: excel lookup excel-formula worksheet-function