|
こんな感じでいかがでしょう?
bit演算を利用した方法です。
Private strArray() As String
Sub CallGetComb()
Call GetComb("ABCDE")
End Sub
Sub GetComb(strTarget As String)
Dim lngLength As Long
Dim lngDefault As Long
Dim lngCount As Long
Dim lngPrim As Long
Dim lngElse As Long
Dim i As Long
lngLength = Len(strTarget)
'文字列を1文字ごとに配列に格納
ReDim strArray(1 To lngLength)
For i = 1 To lngLength
strArray(i) = Mid$(strTarget, i, 1)
Next i
'組み合わせ数 算出
lngDefault = 2 ^ (lngLength) - 1
lngCount = (lngDefault - 1) \ 2
'組み合わせ取得
For lngPrim = 1 To lngCount
lngElse = lngDefault - lngPrim
Debug.Print strGetPattern(lngPrim) & ":" _
& strGetPattern(lngElse)
Next lngPrim
End Sub
'数値を組み合わせ文字列にする関数
Function strGetPattern(ByVal lngTarget As Long) As String
Dim strBuf As String
Dim i As Long
Dim j As Long
Do
j = 2 ^ i
If lngTarget < j Then Exit Do
If lngTarget And j Then
strBuf = strBuf & strArray(i + 1)
End If
i = i + 1
Loop
strGetPattern = strBuf
End Function
4つ以上でも取得できると思います。
|
|