|
ヒロさん、ichinoseさん、りんさん、こんにちはぁ
>>abcdef のすべての組み合わせをエクセルのシートに出力
>>するようなプログラムがわかる方教えてください。
↑という内容だったので・・・・
[#400]が参考になるかな?と思ったのですが、
入れ替え処理を使っているので、順番がばらばらですね。
なので、抜き出し処理に変えてみました。
結果は多分ichinoseさんと変わらないと思いますが、せっかく作ったので載せさせてください^^;
この手の処理には、再帰呼出(リカーシブコール)という方法を使います。
ichinoseさんのサンプルも私のサンプルも再帰しています。
とても役に立つテクニックなので、是非物にしてくださいね。
---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ---- 8= ---- 8< ----
Sub Macro1()
Permute Range("A1"), "ABC"
End Sub
Sub Permute(ByRef rngData As Range, ByVal strData As String, Optional ByVal lngNum As Long = 1)
Dim i As Long
If lngNum < Len(strData) Then
For i = lngNum To Len(strData)
' 再帰呼出
Permute rngData, Left$(strData, lngNum - 1) & Mid$(strData, i, 1) & Mid$(strData, lngNum, i - lngNum) & Mid$(strData, i + 1), lngNum + 1
Next
Else
' 結果
rngData.Value = strData
Set rngData = rngData.Offset(1)
End If
End Sub
|
|