我在寻求一些关于我的定期提款问题的帮助。我目前使用嵌套 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
和是多余的。我们将其作为从到的 未记录括号的低端。599999
300000
600000
2000000
2000000
∞
答案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