
最终实现的目标:
一个类似于公式一样的:如C2 单元格,写入公式assembly_ns(B2,0);D2单元格写入assembly_ns(B2,1)
其中0代表数字,1代表字母。
这样的公式如同excel内置的sum,average等等函数一样,随着对象单元格变化随时变化。
但这样的公式是如何实现的呢?
答案是通过EXCEL内置VBA宏代码来实现的,具体实现这个功能的代码如下:
Private Function assembly_ns(A1 As Range, B1 As Integer)
Application.Volatile False
Dim i As Integer
Dim s As String
'rng As Range
If IsNumeric(B1) Then
mystr = A1
letternum = ""
numbernum = ""
elsenum = ""
For i = 1 To Len(mystr)
s = Mid(mystr, i, 1)
Select Case s
Case "a" To "z", "A" To "Z"
letternum = letternum & s
Case 0 To 9
numbernum = numbernum & s
Case Else
elsenum = elsenum & s
End Select
Next i
End If
'================
If B1 = 0 Then
assembly_ns = numbernum
ElseIf B1 = 1 Then
assembly_ns = letternum
Else
assembly_ns = ""
End If
End Function
很多公式都可以依次代码来改写,希望对大家学习这块知识有所帮助。
