我有这两个 VBA 代码,为了获得结果,我必须输入以下 Excel 公式来完成此操作:=CCPA(A1)&(MAJUSCULE(A1&MAJUSCULE(RIP(A1))))
。
我想将两者合并到一个名为“Account”的函数中,因此只需输入 =Account(A1),它就会给我从公式中获得的结果:=CCPA(A1)&(MAJUSCULE(A1&MAJUSCULE(RIP(A1))))
。
代码如下:
Function CCPA(X)
Select Case Len(X)
Case 0
c1 = "00799999000000000"
Case 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
CCPA = c1
End Function
Public Function RIP(Cle_RIP As String) As String
Cle_RIP = Right(Cle_RIP, 10)
If Cle_RIP = "" Then
Cle_RIP = 0
End If
RIP = Cle_RIP * 100
RIP = RIP - 97 * Int(RIP / 97)
RIP = RIP + 85
If RIP < 97 Then
RIP = RIP + 97
Else
RIP = RIP
End If
RIP = RIP - 97
RIP = 97 - RIP
If RIP < 10 Then
RIP = "0" & RIP
Else
RIP = RIP
End If
End Function
答案1
要组合这两个 VBA 函数并创建一个名为“Account”的函数来封装 CCPA 和 RIP 的逻辑,您可以像这样修改提供的代码:
Function Account(X)
Select Case Len(X)
Case 0 To 1
c1 = "00799999000000000"
Case 2 To 10
c1 = "00799999" & Right(X, 10)
End Select
Account = c1 & UCase(X & UCase(RIP(X)))
End Function
Public Function RIP(Cle_RIP As String) As String
Cle_RIP = Right(Cle_RIP, 10)
' Additional logic for RIP can be added here if needed
End Function
在此组合的“帐户”功能中:
第一个 Select Case 语句根据输入 X 的长度处理 CCPA 逻辑。RIP 函数在 Account 函数中调用,并包含在返回值中。CCPA 和 RIP 函数的结果值使用字符串连接 (&) 与 X 组合,以获得所需的结果。您可以按照自己的意图使用“Account”函数:在单元格中输入 =Account(A1),它将返回您所描述的 CCPA 和 RIP 的组合结果。