• ベストアンサー

エクセルVBA 条件付整数組合わせ表示方法

整数の組み合わせを表示する方法をおしえてください。 1~6の整数をつかって A<B<C かつ D<E<F となるような数字の組み合わせを A列 B列 C列 D列 E列 F列 1 2 3 4 5 6 1 2 4 3 5 6 ・ ・ ・ となるように順番に表示していくには どうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Dim c Private Function check(str As String) As Boolean Dim b, e b = Mid(str, 2, 1) check = False If Mid(str, 1, 1) < b And b < Mid(str, 3, 1) Then e = Mid(str, 5, 1) If Mid(str, 4, 1) < e And e < Mid(str, 6, 1) Then check = True 'A<B<C AND D<E<F End If End If End Function Private Sub rp(ByVal result As String, ByVal selectList As String) Dim i, strLen As Integer, choice As String strLen = Len(selectList) If strLen = 1 Then If check(result & selectList) Then Range("A1").Offset(c).Value = result & selectList c = c + 1 End If Else For i = 1 To strLen choice = Mid(selectList, i, 1) Call rp(result & choice, Replace(selectList, choice, "")) Next End If End Sub Public Sub exec() c = 0 Call rp("", "123456") End Sub

taniyan777
質問者

お礼

すごい。の一言です。 このソースを勉強してみます。 ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

別の回答で使ったコードを再度使います。 Option Explicit Const N = 6 Dim k Dim p(N) Sub test_perm()  Dim i As Long  Range("a1").CurrentRegion.ClearContents  k = 0  For i = 1 To N   p(i) = i  Next i   perm 1 End Sub Private Sub perm(i As Variant)  Dim j As Long, t As Long  If i < N Then   For j = i To N    t = p(i): p(i) = p(j): p(j) = t    perm i + 1    t = p(i): p(i) = p(j): p(j) = t   Next j   Else   If (p(1) < p(2) And p(2) < p(3)) _     And p(4) < p(5) And p(5) < p(6) Then    For j = 1 To N     Cells(k + 1, j) = p(j)    Next j    k = k + 1   End If  End If End Sub

taniyan777
質問者

お礼

ありがとうございます。 しばらくヘルプをひっぱりながら ソースを理解できるまでがんばってみます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 こういうのは、アリですか?ナシですか? 1  5  6  2  3  4 4  5  6  1  2  3 条件からすれば、OK のような気がしますが?

taniyan777
質問者

補足

もちろんありです。 それができずにこまってます。

関連するQ&A