1

私は 2 つのシートを持っています。シート 1 には 4 つの空の列を持つ大量の情報があり、シート 2 にはそれぞれの下に多数のコンテンツがある 4 つのリストがあります。例:

List1: A、B、C
List2: D、E、F、G
List3: H、I、J、K、L、M
List4: N

Sheet1 の空の列にリストのすべての組み合わせを入力し、生成された組み合わせごとに元の Sheet1 コンテンツを複製したいと思います。例: (一般的なアイデアで、特定の順序はありません)

ContentXYZ|(空)|(空)|(空)|(空)
ContentXYZ|A|(空)|(空)|(空)
ContentXYZ|B|(空)|(空)|(空)
...
ContentXYZ|(空)|D|(空)|(空)
...
ContentXYZ|(空)|(空)|(空)|N
...
ContentXYZ|B|F|(空)|(空)
. ..
ContentXYZ|(空)|G|(空)|N
...
ContentXYZ|(空)|E|K|N
...
ContentXYZ|C|G|M|N

私は複製部分を完成させ、組み合わせ部分で立ち往生しています。これが私がこれまでに持っているものです。誰かが残りを完了するのを手伝ってくれるなら、事前に感謝します!

Sub DupSubGroup()

    b = 1
    d = 1
    f = 1
    h = 1

    Do

        Sheets(1).Activate
        Sheets(1).Range("A1:F1").Copy
        erow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        ActiveSheet.Paste Destination:=Sheets(1).Rows(erow)

    ...

    Loop While b <= Sheet2.Columns("B:B").SpecialCells(xlVisible).Rows.Count And d <=    Sheet2.Columns("D:D").SpecialCells(xlVisible).Rows.Count And f <= Sheet2.Columns("F:F").SpecialCells(xlVisible).Rows.Count And h <= Sheet2.Columns("H:H").SpecialCells(xlVisible).Rows.Count
4

1 に答える 1

0

すべての順列を作成するサイクルを探している場合の例を次に示します。

Sub Test()
  Dim List1 As Variant, List2 As Variant, List3 As Variant
  List1 = Array("A", "B", "C", "D")
  List2 = Array(1, 2, 3)
  List3 = Array(True, False)

  Dim I1 As Integer, I2 As Integer, I3 As Integer, R As Integer
  R = 1
  For I1 = 0 To UBound(List1)
    For I2 = 0 To UBound(List2)
      For I3 = 0 To UBound(List3)
        Cells(R, 1) = List1(I1)
        Cells(R, 2) = List2(I2)
        Cells(R, 3) = List3(I3)
        R = R + 1
      Next I3
    Next I2
  Next I1
End Sub
于 2013-01-06T16:43:39.907 に答える