MICROSOFT

EP03. “Tax Rates 税率计算”

首页 Microsoft 工具 Excel · VBA · If Then Statement · EP03
约 5 分钟· #EP03#Excel#If Then Statement
🔒 登录后可标记已读
  • 这篇用一个实际场景——按累进税率算所得税——示范怎么把 Select Case 用在真实计算里
  • 前置知识是 EP02 的 Select Case 结构和基本的四则运算
  • 学完能照着累进税率表写出对应的 VBA 计算逻辑
  • 这套思路也能套用在任何「按区间给不同费率/折扣」的场景

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


场景:澳大利亚居民所得税税率表

应税收入税率
RM0 - RM6,000无税
RM6,001 - RM35,000超过 RM6,000 部分的 15%
RM35,001 - RM80,000RM4,350 + 超过 RM35,000 部分的 30%
RM80,001 - RM180,000RM17,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

代码说明

  1. 声明 incometax 两个 Double(双精度浮点数,能存小数)变量
  2. Round 把 A2 的收入值四舍五入成整数,再写回 A2
  3. Select Case 从最高区间往下判断收入落在哪一档,注意判断顺序是从大到小——因为 Select Case 只会命中第一个符合的条件,如果从小到大写,所有超过 $6,001 的收入都会先命中最低那一档,后面的判断永远执行不到
  4. 按对应区间的公式算出税额,写入 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:

  1. Tax Rates