You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel如何为函数创建引用变量以实现自定义Tax计税函数

Excel个税计算器自定义函数实现方案

需求背景

我需要实现自定义函数内动态引用变量的功能,具体场景为已有的个税计算器,目前可通过SUMPRODUCT函数(搭配累计表时VLOOKUP也可得到正确结果)得到正确计算值。

当前使用的SUMPRODUCT公式如下:
=SUMPRODUCT(A4:A10-A3:A9,E1-C4:C10,N(E1>C4:C10))

我希望将公式中的E1替换为变量x,最终可以通过=Tax(E1)得到和原SUMPRODUCT公式一致的计算结果,但不知道如何将x设置为可引用的变量。
目前使用=LET(x, E1, SUMPRODUCT(A4:A10-A3:A9,x-C4:C10,N(x>C4:C10)))已经可以得到正确值,在此基础上我希望进一步简化公式,实现可以动态传入任意单元格参数,即支持输入=Tax(任意单元格)调用。

最终实现方案(VBA自定义函数)

后续我研究了SUMPRODUCT函数的运行逻辑,检索了大量VBA相关资料,最终编写了可实现该需求的VBA自定义函数,代码如下供有需要的用户参考:

Dim Rate1 As Single
Dim Rate2 As Single
Dim Rate3 As Single
Dim Rate4 As Single
Dim Rate5 As Single
Dim Rate6 As Single
Dim Rate7 As Single

Dim Over1 As Single
Dim Over2 As Single
Dim Over3 As Single
Dim Over4 As Single
Dim Over5 As Single
Dim Over6 As Single
Dim Over7 As Single

Dim Amount1 As Single
Dim Amount2 As Single
Dim Amount3 As Single
Dim Amount4 As Single
Dim Amount5 As Single
Dim Amount6 As Single
Dim Amount7 As Single

Dim Tax1 As Single
Dim Tax2 As Single
Dim Tax3 As Single
Dim Tax4 As Single
Dim Tax5 As Single
Dim Tax6 As Single
Dim Tax7 As Single

Dim Final As Single

Function Tax(Value As Single)
    Rate1 = 0.1
    Rate2 = 0.02
    Rate3 = 0.1
    Rate4 = 0.02
    Rate5 = 0.08
    Rate6 = 0.03
    Rate7 = 0.02
    
    Over1 = 0
    Over2 = 9951
    Over3 = 40526
    Over4 = 86376
    Over5 = 164926
    Over6 = 209426
    Over7 = 523601
    
    Amount1 = Value - Over1
    If Amount1 > 0 Then
        Tax1 = Amount1 * Rate1
        Final = Tax1
        Amount2 = Value - Over2
    Else
        Amount2 = 0
    End If
    If Amount2 > 0 Then
        Tax2 = Amount2 * Rate2
        Final = Final + Tax2
        Amount3 = Value - Over3
    Else
        Amount3 = 0
    End If
    If Amount3 > 0 Then
        Tax3 = Amount3 * Rate3
        Final = Final + Tax3
        Amount4 = Value - Over4
    Else
        Amount4 = 0
    End If
    If Amount4 > 0 Then
        Tax4 = Amount4 * Rate4
        Final = Final + Tax4
        Amount5 = Value - Over5
    Else
        Amount5 = 0
    End If
    If Amount5 > 0 Then
        Tax5 = Amount5 * Rate5
        Final = Final + Tax5
        Amount6 = Value - Over6
    Else
        Amount6 = 0
    End If
    If Amount6 > 0 Then
        Tax6 = Amount6 * Rate6
        Final = Final + Tax6
        Amount7 = Value - Over7
    Else
        Amount7 = 0
    End If

    Tax = Value - Final
End Function

内容的提问来源于stack exchange,提问作者Jacob Hogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:04