Excel "IF" 公式:计算经纪费用
Excel "IF" formula: Calculate Brokerage Fees
我是 Excel 的初学者,我想做的是关于经纪费用的简单计算。这是我需要支付的费用:
Stock value under MYR 1000 : Stamp duty MYR 1.
Stock value under MYR 2000 : Stamp duty MYR 2.
Stock value under MYR 3000 : Stamp duty MYR 3.
它一直持续到股票价值低于 200,000 令吉,印花税将停止在 200 令吉。当股票价值超过 200,000 令吉时,仍然需要支付 200 令吉的印花税。
所以,基本上我已经制作了我的“IF”公式,并且看起来这件事永远都在发生。这是我使用的公式;
=IF(L31>=37001,38,IF(L31>=36001,37,IF(L31>=35001,36,IF(L31>=34001,35,IF(L31>=33001,34,IF(L31>=32001,33,IF(L31>=31001,32,IF(L31>=30001,31,IF(L31>=29001,30,IF(L31>=28001,29,IF(L31>=27001,28,IF(L31>=26001,27,IF(L31>=25001,26,IF(L31>=24001,25,IF(L31>=23001,24,IF(L31>=22001,23,IF(L31>=21001,22,IF(L31>=20001,21,IF(L31>=19001,20,IF(L31>=18001,19,IF(L31>=17001,18,IF(L31>=16001,17,IF(L31>=15001,16,IF(L31>=14001,15,IF(L31>=13001,14,IF(L31>=12001,13,IF(L31>=11001,12,IF(L31>=100001,11,IF(L31>=9001,10,IF(L31>=8001,9,IF(L31>=7001,8,IF(L31>=6001,7,IF(L31>=5001,6,IF(L31>=4001,5,IF(L31>=3001,4,IF(L31>=2001,3,IF(L31>=1001,2,IF(L31>=1,1))))))))))))))))))))))))))))))))))))))
所以,我的问题是,是否有适合第一段所写规则的简单公式?
非常感谢。
根据单元格格式的一致性,您可以使用LEN()
检查数字的长度,然后相应地进行格式化。
IF(LEN(L31)=5,LEFT(L31,2)+1
- If the length is 5 characters, take the first 2 characters and add 1.
,IF(LEN(L31)=4,LEFT(L31,1)+1
- if the length is 4 characters, take the first characters and add 1.
,1))
- if nothing else matches, the value is 1.
=IF(LEN(L31)=5,LEFT(L31,2)+1,IF(LEN(L31)=4,LEFT(L31,1)+1,1))
另外请注意,您的公式中有错字(100001 应该是 10001)。
您的嵌套 IF 公式可以替换为一个简单的公式:
=VLOOKUP($B,$A:$B,2)
这是 VLOOKUP 的经典用例,没有传递错误参数。
您可以搜索 VLOOKUP 以查看其工作原理。
这比尝试嵌套 IF 语句要简单得多。
例子
假设您有以下 2 列 table,第 1 行作为标题:
COLUMN A COLUMN B
----------- ----------------
Row 1: Stock value Stamp duty (MYR)
Row 2: 0 1
Row 3: 1000 2
Row 4: 2000 3
假设您在单元格 B6 中有一个股票价值。
您的查找公式(在其他单元格中,例如 B7)将简单地为:
=VLOOKUP($B,$A:$B,2)
然后您可以将此 table 向下扩展,直到最后一行在 A 列中有 200,000。(不要忘记确保公式也引用新行)。
虽然VLOOKUP
是消除所有IF的经典方法,但在这种特殊情况下,由于以下关系,公式解决方案也是可能的:
=MIN(INT((L31-1)/1000)+1,200)
似乎给出了与您的公式预期相同的结果。
我是 Excel 的初学者,我想做的是关于经纪费用的简单计算。这是我需要支付的费用:
Stock value under MYR 1000 : Stamp duty MYR 1.
Stock value under MYR 2000 : Stamp duty MYR 2.
Stock value under MYR 3000 : Stamp duty MYR 3.
它一直持续到股票价值低于 200,000 令吉,印花税将停止在 200 令吉。当股票价值超过 200,000 令吉时,仍然需要支付 200 令吉的印花税。
所以,基本上我已经制作了我的“IF”公式,并且看起来这件事永远都在发生。这是我使用的公式;
=IF(L31>=37001,38,IF(L31>=36001,37,IF(L31>=35001,36,IF(L31>=34001,35,IF(L31>=33001,34,IF(L31>=32001,33,IF(L31>=31001,32,IF(L31>=30001,31,IF(L31>=29001,30,IF(L31>=28001,29,IF(L31>=27001,28,IF(L31>=26001,27,IF(L31>=25001,26,IF(L31>=24001,25,IF(L31>=23001,24,IF(L31>=22001,23,IF(L31>=21001,22,IF(L31>=20001,21,IF(L31>=19001,20,IF(L31>=18001,19,IF(L31>=17001,18,IF(L31>=16001,17,IF(L31>=15001,16,IF(L31>=14001,15,IF(L31>=13001,14,IF(L31>=12001,13,IF(L31>=11001,12,IF(L31>=100001,11,IF(L31>=9001,10,IF(L31>=8001,9,IF(L31>=7001,8,IF(L31>=6001,7,IF(L31>=5001,6,IF(L31>=4001,5,IF(L31>=3001,4,IF(L31>=2001,3,IF(L31>=1001,2,IF(L31>=1,1))))))))))))))))))))))))))))))))))))))
所以,我的问题是,是否有适合第一段所写规则的简单公式?
非常感谢。
根据单元格格式的一致性,您可以使用LEN()
检查数字的长度,然后相应地进行格式化。
IF(LEN(L31)=5,LEFT(L31,2)+1
- If the length is 5 characters, take the first 2 characters and add 1.
,IF(LEN(L31)=4,LEFT(L31,1)+1
- if the length is 4 characters, take the first characters and add 1.
,1))
- if nothing else matches, the value is 1.
=IF(LEN(L31)=5,LEFT(L31,2)+1,IF(LEN(L31)=4,LEFT(L31,1)+1,1))
另外请注意,您的公式中有错字(100001 应该是 10001)。
您的嵌套 IF 公式可以替换为一个简单的公式:
=VLOOKUP($B,$A:$B,2)
这是 VLOOKUP 的经典用例,没有传递错误参数。
您可以搜索 VLOOKUP 以查看其工作原理。
这比尝试嵌套 IF 语句要简单得多。
例子
假设您有以下 2 列 table,第 1 行作为标题:
COLUMN A COLUMN B
----------- ----------------
Row 1: Stock value Stamp duty (MYR)
Row 2: 0 1
Row 3: 1000 2
Row 4: 2000 3
假设您在单元格 B6 中有一个股票价值。
您的查找公式(在其他单元格中,例如 B7)将简单地为:
=VLOOKUP($B,$A:$B,2)
然后您可以将此 table 向下扩展,直到最后一行在 A 列中有 200,000。(不要忘记确保公式也引用新行)。
虽然VLOOKUP
是消除所有IF的经典方法,但在这种特殊情况下,由于以下关系,公式解决方案也是可能的:
=MIN(INT((L31-1)/1000)+1,200)
似乎给出了与您的公式预期相同的结果。