VBA_組み合わせ出力_5種


1.概要

5種類の配列の組み合わせを出力するプログラム。

2.ソースコード


Option Explicit

Sub 組み合わせ_5()

    Dim ar0 As Variant
    Dim ar1 As Variant
    Dim ar2 As Variant
    Dim ar3 As Variant
    Dim ar4 As Variant

    ar0 = Array("a1", "a2", "a3", "a4")
    ar1 = Array("b1", "b2", "b3", "b4")
    ar2 = Array("c1", "c2", "c3", "c4")
    ar3 = Array("d1", "d2", "d3", "d4")
    ar4 = Array("e1", "e2", "e3", "e4")

    Call func_組み合わせ_5(ar0, ar1, ar2, ar3, ar4)

End Sub

Function func_組み合わせ_5(ar0, ar1, ar2, ar3, ar4 As Variant)

    Dim m As Long '行方向のカウンタ
    Dim kind_ As Long: kind_ = 5

    Dim n_a, n_b, n_c, n_d, n_e '列方向のカウンタ

    Dim Buf_() As Variant '生成した組み合わせのバッファ
    ReDim Buf_(kind_)

'組み合わせ生成ループ
    For n_a = 0 To UBound(ar0)
        m = 0 '0行目を対象
        Buf_(m) = ar0(n_a)

        For n_b = 0 To UBound(ar1)
            m = 1 '1行目を対象
            Buf_(m) = ar1(n_b)

            For n_c = 0 To UBound(ar2)
                m = 2 '2行目を対象
                Buf_(m) = ar2(n_c)

                For n_d = 0 To UBound(ar3)
                    m = 3 '2行目を対象
                    Buf_(m) = ar3(n_d)

                    For n_e = 0 To UBound(ar4)
                        m = 4 '2行目を対象
                        Buf_(m) = ar4(n_e)

                        Call DebugPrintArray(Buf_)

                    Next
                Next
            Next
        Next
    Next

End Function

'配列のDebugPrint
Function DebugPrintArray(var As Variant)

    Dim hoge As Variant

    '改行無し、各要素間はスペース
    For Each hoge In var
        Debug.Print hoge + " ";
    Next

    '改行する
    Debug.Print

End Function

3.実行結果

a1 b1 c1 d1 e1

a1 b1 c1 d1 e2

a1 b1 c1 d1 e3

a1 b1 c1 d1 e4

a1 b1 c1 d2 e1

a1 b1 c1 d2 e2

a1 b1 c1 d2 e3

a1 b1 c1 d2 e4

a1 b1 c1 d3 e1

a1 b1 c1 d3 e2

a1 b1 c1 d3 e3

a1 b1 c1 d3 e4

a1 b1 c1 d4 e1

a1 b1 c1 d4 e2

a1 b1 c1 d4 e3

a1 b1 c1 d4 e4

a1 b1 c2 d1 e1

a1 b1 c2 d1 e2

a1 b1 c2 d1 e3

a1 b1 c2 d1 e4

a1 b1 c2 d2 e1

a1 b1 c2 d2 e2

a1 b1 c2 d2 e3

a1 b1 c2 d2 e4

a1 b1 c2 d3 e1

a1 b1 c2 d3 e2

a1 b1 c2 d3 e3

a1 b1 c2 d3 e4

a1 b1 c2 d4 e1

a1 b1 c2 d4 e2

a1 b1 c2 d4 e3

a1 b1 c2 d4 e4

a1 b1 c3 d1 e1

a1 b1 c3 d1 e2

a1 b1 c3 d1 e3

a1 b1 c3 d1 e4

a1 b1 c3 d2 e1

a1 b1 c3 d2 e2

a1 b1 c3 d2 e3

a1 b1 c3 d2 e4

a1 b1 c3 d3 e1

a1 b1 c3 d3 e2

a1 b1 c3 d3 e3

a1 b1 c3 d3 e4

~以下略