Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


75611 / 76738 ←次へ | 前へ→

【5562】Re:組み合わせのプログラム教えてください。
回答  JuJu E-MAIL  - 03/5/20(火) 12:46 -

引用なし
パスワード
   ヒロさん、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

1 hits

【5548】組み合わせのプログラム教えてください。 ヒロ 03/5/19(月) 17:16 質問
【5549】Re:組み合わせのプログラム教えてください。 りん 03/5/19(月) 18:53 発言
【5553】Re:組み合わせのプログラム教えてください。 ichinose 03/5/19(月) 23:37 回答
【5562】Re:組み合わせのプログラム教えてください。 JuJu 03/5/20(火) 12:46 回答
【5567】Re:組み合わせのプログラム教えてください。 ichinose 03/5/20(火) 16:02 発言
【5589】Re:組み合わせのプログラム教えてください。 ヒロ 03/5/21(水) 10:54 お礼

75611 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free