Excel VBA質問箱 IV

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

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


61673 / 76738 ←次へ | 前へ→

【19679】Re:教えてください
回答  ちゃっぴ  - 04/11/14(日) 11:34 -

引用なし
パスワード
   こんな感じでいかがでしょう?
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つ以上でも取得できると思います。

1 hits

【19670】教えてください ゆか 04/11/13(土) 16:49 質問
【19673】Re:教えてください Kein 04/11/13(土) 20:22 発言
【19675】Re:教えてください [名前なし] 04/11/13(土) 21:07 発言
【19678】Re:教えてください ichinose 04/11/14(日) 0:15 発言
【19679】Re:教えてください ちゃっぴ 04/11/14(日) 11:34 回答
【19680】Re:教えてください ちゃっぴ 04/11/14(日) 13:56 発言
【19691】ありがとうございます ゆか 04/11/15(月) 12:06 お礼
【19710】教えてください ゆか 04/11/15(月) 16:48 質問
【19946】Re:教えてください hamar 04/11/19(金) 18:39 回答
【19951】Re:教えてください ちゃっぴ 04/11/19(金) 22:15 回答
【19953】Re:教えてください ちゃっぴ 04/11/19(金) 22:21 発言
【19957】Re:教えてください ichinose 04/11/20(土) 0:29 発言
【19958】Re:教えてください ちゃっぴ 04/11/20(土) 0:33 発言
【19959】Re:教えてください 追伸 ichinose 04/11/20(土) 1:22 発言
【20041】ありがとうございました! ゆか 04/11/25(木) 11:42 お礼

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