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

如何将两个VBA函数合并为自定义Account函数?

合并VBA函数为Account自定义函数

以下是合并后的Account自定义函数,直接使用=Account(A1)即可得到与原公式相同的结果:

Public Function Account(inputVal As Variant) As String
    Dim c1 As String
    Dim inputLen As Integer
    Dim ripResult As String
    Dim cleRIP As String
    
    ' 原CCPA函数逻辑
    inputLen = Len(inputVal)
    Select Case inputLen
        Case 0 To 1
            c1 = "00799999000000000"
        Case 2
            c1 = "0079999900000000"
        Case 3
            c1 = "007999990000000"
        Case 4
            c1 = "00799999000000"
        Case 5
            c1 = "0079999900000"
        Case 6
            c1 = "007999990000"
        Case 7
            c1 = "00799999000"
        Case 8
            c1 = "0079999900"
        Case 9
            c1 = "007999990"
        Case 10
            c1 = "00799999"
    End Select
    
    ' 原RIP函数逻辑
    cleRIP = Right(inputVal, 10)
    If cleRIP = "" Then
        cleRIP = "0"
    End If
    ripResult = CDbl(cleRIP) * 100
    ripResult = ripResult - 97 * Int(ripResult / 97)
    ripResult = ripResult + 85
    
    If ripResult < 97 Then
        ripResult = ripResult + 97
    End If
    
    ripResult = ripResult - 97
    ripResult = 97 - ripResult
    
    If ripResult < 10 Then
        ripResult = "0" & CStr(ripResult)
    Else
        ripResult = CStr(ripResult)
    End If
    
    ' 拼接结果,对应原公式的MAJUSCULE(VBA中用UCase实现大写)
    Account = c1 & UCase(CStr(inputVal) & UCase(ripResult))
End Function

说明

  1. 整合了原CCPA和RIP函数的全部逻辑,无需再调用多个函数
  2. 原公式中的MAJUSCULE是Excel法语版的大写函数,对应VBA中的UCase函数,已替换实现相同效果
  3. 优化了原CCPA的Case判断,将0和1长度的输入合并为同一分支,逻辑不变但更简洁
  4. 明确声明变量类型,提升代码稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:32:39