如何将VLOOKUP函数用于从另外两列生成值的列

时间:2018-12-20 08:24:41

标签: excel-formula

我想填充此公式,但是不允许使用此级别的嵌套循环...

=IF(D2<101,"27.50",IF(D2<151,"21.34",IF(D2<201,"26.07",IF(D2<251,"29.81",IF(D2<301,"34.54",IF(D2<351,"39.27",IF(D2<401,"44.00",IF(D2<451,"49.72",IF(D2<501,"56.87",IF(D2<551,"61.60",IF(D2<601,"66.33",IF(D2<651,"71.06",IF(D2<701,"75.90",IF(D2<751,"80.63",IF(D2<801,"85.36",IF(D2<851,"87.67",IF(D2<901,"90.97",IF(D2<951,"92.40","97.90"))))))))))))))))))

其中D2的计算方式类似于=(A2+B2)/2

2 个答案:

答案 0 :(得分:1)

您可以使用INDEX(MATCH())解决问题,但是查找数组的顺序必须降序,并且限制应为+1,因为它以大于或等于形式的形式工作,因此如果是查询表:

A   B
252 29.81
202 26.07
152 21.34
102 27.5

这将是公式:

=INDEX($B$1:$B$4,MATCH(D2,$A$1:$A$4,-1))

答案 1 :(得分:0)

解决此问题的最佳方法是使用查找表作为中途点,可以在工作表上的某个位置,也可以在隐藏的单元格/工作表中(如果需要)。

该表将如下所示:

|-----|-------|
| 101 | 27.5  |
|-----|-------|
| 151 | 21.34 |
|-----|-------|
| 201 | 26.07 |
|-----|-------|
 etc...

然后,您可以根据条件使用查找来查找值,假设该表位于Sheet2!A1:B3中:

=IFERROR(INDEX(Sheet2!$B$1:$B$3,SMALL(IF($D$2<Sheet2!$A$1:$A$3,ROW(Sheet2!$A$1:$A$3)-ROW(Sheet2!$A$1)+1),1)),"97.90")-输入为数组公式( Ctrl + Shift + Enter

INDEX(Sheet2!$B$1:$B$3,-创建基于1的B1:B3索引(索引从1开始)

IF($D$2<Sheet2!$A$1:$A$3,ROW(Sheet2!$A$1:$A$3)-ROW(Sheet2!$A$1)+1-将A1:A3中大于D2的所有项目的位置作为数组返回引用(通过将行号减去第一行的行号加1)

SMALL([If()],1)-从INDEX()然后要查找的数组中返回第一个最小的行号

IFERROR([Index(Small(If()))],"97.90")-由于任何大于表中最大数字的数字都会产生错误,因此请返回“ 97.90”