VBA实用小程序77:生成字符的所有组合
excelperfect
这是在stackoverflow.com中看到的一段VBA程序,生成所有7个字符中5个字符的任意组合,有兴趣的朋友可以试试。
程序代码如下:
Public Function DropCH(sIn As String, L As Long) As String
Dim ll As Long
If L = 1 Then
DropCH = Mid(sIn, 2)
Exit Function
End If
ll = Len(sIn)
If ll = L Then
DropCH = Left(sIn, L - 1)
Exit Function
End If
If L > ll Then
DropCH = ''
Exit Function
End If
DropCH = Mid(sIn, 1, L - 1) & Mid(sIn,L + 1)
End Function
在工作表单元格A1中输入包含7个字符的字符串,然后在单元格C1中输入公式:
=DropCH($A$1,COLUMNS($A:A))
然后拖动C1至单元格I1,如下图1所示。
图1
在单元格C2中输入公式:
=DropCH(C$1,ROW()-1)
然后,向下拖至单元格C7,向右拖至单元格I7。结果如下图2所示。
图2
要移除重复值,可以运行下面的程序:
Sub DropDuplicates()
Dim c As Collection
Dim K As Long
Dim r As Range
Set c = New Collection
On Error Resume Next
K = 1
For Each r In Range('C2:I7')
If r.Value <> '' Then
c.Add r.Value, CStr(r.Value)
If Err.Number = 0 Then
Cells(K, 'J').Value = r.Value
K = K + 1
Else
Err.Number = 0
End If
End If
Next r
On Error GoTo 0
End Sub
这将在列J中放所有的不重复的5个字符组合,如下图3所示。
图3
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。