返回某个数字在一定范围内的值

返回某个数字在一定范围内的值

我在寻求一些关于我的定期提款问题的帮助。我目前使用嵌套 IF 函数来解决这个问题,但我得到的范围越来越多,这导致嵌套的 IF 函数越来越多。除此之外,我还在运行优化,所以在某个时候它就会爆炸。

问题:

Low        High        Amount to withdraw
600000     2000000     32000
300000     599999      20000
0          299999      8000

因此,如果用户输入当前存储,比如说 325000,则表格会输出 20000。如果用户提交 153555,则答案会输出 8000

就像我说的,只有 3 个棘轮使用嵌套 if 子句并非不可能,但可能有 10 个棘轮,嵌套 if 子句是不可行的。我想用 Excel 公式而不是宏来解决这个问题。

答案1

按以下表格1设置您的括号信息:

Low       Amount to withdraw
0         8000
300000    20000
600000    32000
2000000   #N/A

工作簿中的某个位置;假设E2:F5(标题位于第 1 行)。然后使用函数

=VLOOKUP(价值, 2 欧元:5 法郎, 2)

查找并检索表格最后一行中的第二个值(即要提取的金额),其中E值(括号的下端)≤查找值;例如:

                       

一个稍微更现实的公式是

=IF(ISBLANK(A1), "", VLOOKUP(A1, E$2:F$5, 2))

这将显示空白输入的空白​​结果(而不是将其视为 0)。


1我们没有表中范围的高端,因为我们不需要; 当我们有和时,299999和是多余的。我们将其作为从到的 未记录括号的低端。59999930000060000020000002000000

答案2

我会用指数匹配功能。
假设您可以先按升序对表格进行排序。否则=MATCH()无法正常工作

在此处输入图片描述

=IF(F2<=INDEX(A:C,MATCH(F2,A:A,1),2),INDEX(A:C,MATCH(F2,A:A,1),3),"invalid")

这也会检查较高的值。我针对这种情况调整了第 3 行的表格。现在,400000 不符合有效范围并显示无效的

分解为单独的单元格中的小公式(用户输入在单元格 F2 中)

[G9]  =MATCH(F2,A:A,1)             Find row in table
[G10] =INDEX(A:C,G9,2)             Find corresponding high value
[G11] =INDEX(A:C,G9,3)             Find corresponding amount to withdraw
[G12] =IF(F2<=G10,G11,"invalid")   Check if input is lower then upper boundary

相关内容