簡體   English   中英

如何為 Excel 中的函數創建引用變量?

[英]How can I make a reference variable for a function in Excel?

試圖使變量在函數內工作。 方法如下: 我有一個所得稅計算器。 它完美無缺。 如果我要使用 SUMPRODUCT,我也可以獲得正確的值(或者甚至 VLOOKUP,如果我使用累積表,現在使用 nvm;只要知道我也嘗試過 VLOOKUP)。

SUMPRODUCT 公式是這樣的:

=SUMPRODUCT(A4:A10-A3:A9,E1-C4:C10,N(E1>C4:C10))

我希望能夠用“x”替換 E1 以便我可以制作一個公式,這樣=Tax(E1)會給我與 SUMPRODUCT 公式相同的結果。 問題是我不知道如何使用“x”作為變量。

使用=LET(x, E1, SUMPRODUCT(A4:A10-A3:A9,x-C4:C10,N(x>C4:C10)))確實給出了正確的值。 從這里我想把它變成一個更簡單的公式,我可以通過公式=Tax(E1)或 E1 以外的任何單元格動態地將“E1”更改為任何內容。

帶有 SUMPRODUCT 公式的表格圖片

--------- 編輯--------- 我最終研究了 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

如果您有 Excel 365,現在可以使用 Lambda 常規描述示例來定義沒有 VBA 的函數。 原則上它與 Let 幾乎相同:

=LAMBDA(x, SUMPRODUCT(Sheet1!A4:A10-Sheet1!A3:A9,x-Sheet1!C4:C10,N(x>Sheet1!C4:C10)))

但在實踐中,您需要將引用設為絕對引用,否則公式將根據您從何處調用它而改變:

=LAMBDA(x, SUMPRODUCT(Sheet1!$A$4:$A$10-Sheet1!$A$3:$A$9,x-Sheet1!$C$4:$C$10,N(x>Sheet1!$C$4:$C$10)))

這是您在名稱管理器中定義它的方式:

在此處輸入圖片說明

然后你可以簡單地把

=Tax(E1)

在任何單元格中。

請注意,如@Jos Woolley 所述,您可能需要訂閱Office預覽體驗計划才能訪問此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM