天天看點

EXCEL VBA 自定義函數 招标代理費計算

依據《國家發展計劃委員會檔案計價格[2002]1980号》計算招标代理費的自定義函數

Option Explicit

Function 招标代理費(服務類型 As String, 中标金額 As Double) As Double
    Dim brr
    
    If 服務類型 = "貨物" Then        '貨物
        brr = [{1.50,1.10,0.80,0.50,0.25,0.05,0.01}/100]
    ElseIf 服務類型 = "服務" Then    '服務
        brr = [{1.50,0.80,0.45,0.25,0.10,0.05,0.01}/100]
    ElseIf 服務類型 = "工程" Then    '工程
        brr = [{1.00,0.70,0.55,0.35,0.20,0.05,0.01}/100]
    Else
        招标代理費 = "error"
        Exit Function
    End If
    
    If 中标金額 >= 0 And 中标金額 <= 1000000 Then
        招标代理費 = 中标金額 * brr(1)
        Exit Function
    ElseIf 中标金額 > 1000000 And 中标金額 <= 5000000 Then
        招标代理費 = 1000000 * brr(1) + (中标金額 - 1000000) * brr(2)
        Exit Function
    ElseIf 中标金額 > 5000000 And 中标金額 <= 10000000 Then
        招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + (中标金額 - 5000000) * brr(3)
        Exit Function
    ElseIf 中标金額 > 10000000 And 中标金額 <= 50000000 Then
        招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + (中标金額 - 10000000) * brr(4)
        Exit Function
    ElseIf 中标金額 > 50000000 And 中标金額 <= 100000000 Then
        招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + (中标金額 - 50000000) * brr(5)
        Exit Function
    ElseIf 中标金額 > 100000000 And 中标金額 <= 1000000000 Then
        招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + 50000000 * brr(5) + (中标金額 - 100000000) * brr(6)
        Exit Function
    ElseIf 中标金額 > 1000000000 Then
        招标代理費 = 1000000 * brr(1) + 4000000 * brr(2) + 5000000 * brr(3) + 40000000 * brr(4) + 50000000 * brr(5) + 100000000 * brr(6) + (中标金額 - 1000000000) * brr(7)
    Else
        招标代理費 = "error"
        Exit Function
    End If
End Function
           

以下為給函數添加幫助資訊的代碼

'此過程使用者注冊自定義函數,給自定義函數添加幫助,使用前先運作一次。
Sub 需要運作一次()
    Dim 函數名稱 As String        '函數名稱
    Dim 函數描述 As String        '函數描述
    Dim 函數類别 As Integer        '函數類别
    Dim 參數個數(1)     '函數參數描述 數組 個數
    函數名稱 = "招标代理費"
    函數描述 = "國家發展計劃委員會檔案計價格[2002]1980号"
    函數類别 = 14
    參數個數(0) = "貨物、服務或工程"
    參數個數(1) = " "
    Call Application.MacroOptions(Macro:=函數名稱, Description:=函數描述, Category:=函數類别, ArgumentDescriptions:=參數個數)
End Sub
           

以上是代碼,把excel檔案另存為.xlam格式,再加一個customui就基本完美了。

繼續閱讀