EP03. “Tax Rates 税率计算”
🔒 登录后可标记已读- 这篇用一个实际场景——按累进税率算所得税——示范怎么把
Select Case用在真实计算里 - 前置知识是 EP02 的
Select Case结构和基本的四则运算 - 学完能照着累进税率表写出对应的 VBA 计算逻辑
- 这套思路也能套用在任何「按区间给不同费率/折扣」的场景
重点内容
适用版本
桌面版通用(Excel 365 / 2021 / 2019 等)。
场景:澳大利亚居民所得税税率表
| 应税收入 | 税率 |
|---|---|
| RM0 - RM6,000 | 无税 |
| RM6,001 - RM35,000 | 超过 RM6,000 部分的 15% |
| RM35,001 - RM80,000 | RM4,350 + 超过 RM35,000 部分的 30% |
| RM80,001 - RM180,000 | RM17,850 + 超过 RM80,000 部分的 38% |
| RM180,001 以上 | RM55,850 + 超过 RM180,000 部分的 45% |
完整 VBA 代码
Dim income As Double
Dim tax As Double
income = Round(Range("A2").Value)
Range("A2").Value = income
Select Case income
Case Is >= 180001
tax = 55850 + 0.45 * (income - 180000)
Case Is >= 80001
tax = 17850 + 0.38 * (income - 80000)
Case Is >= 35001
tax = 4350 + 0.3 * (income - 35000)
Case Is >= 6001
tax = 0.15 * (income - 6000)
Case Else
tax = 0
End Select
Range("B2").Value = tax
代码说明
- 声明
income、tax两个Double(双精度浮点数,能存小数)变量 - 用
Round把 A2 的收入值四舍五入成整数,再写回 A2 - 用
Select Case从最高区间往下判断收入落在哪一档,注意判断顺序是从大到小——因为Select Case只会命中第一个符合的条件,如果从小到大写,所有超过 $6,001 的收入都会先命中最低那一档,后面的判断永远执行不到 - 按对应区间的公式算出税额,写入 B2
计算示例
如果 income 是 37000,落在 RM35,001-RM80,000 这一档: tax = 4350 + 0.3 * (37000 - 35000) = 4350 + 600 = RM4950
怎么运行
Alt + F11 打开 VBA 编辑器,把代码放进按钮点击事件,按 F5 或点命令按钮执行。
学完你会
- ✅ 照着税率表把区间判断写成
Select Case,顺序从高到低排列 - ✅ 用
Round处理带小数的收入值 - ✅ 把这套「按区间给不同费率」的思路套用到其他场景(例如折扣、佣金)
常见错误
Select Case的区间判断顺序写反(从小到大而不是从大到小),会导致所有高收入都被错误地套用最低档的税率公式- 忘记先用
Round处理收入,如果输入的是带小数的收入,后续计算不会报错但结果会跟税务局实际算法有细微差异 - 税率表的分界值容易抄错(比如 RM35,001 写成 RM35,000),一个数字之差会让整个区间判断错位
Sources
Blog / Website: