我想填充此公式,但是不允许使用此级别的嵌套循环...
=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
答案 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”