1

私は9つのセルを持っています(3つのグループで考えています)。各グループには文字A、B、Cが含まれています.3つのグループ間で順序がバランスが取れているため、文字が2回同じ位置にあることはありません。

ABCCABBAC

文字d、e、fを含む3つのセルがあります。次のルールで、d、e、および f を A、B、および C に割り当てます。

  1. d、e、および f は、各グループ内でそれぞれ 1 回表されます。
  2. d、e、f はそれぞれ A、B、C と 1 回結合します

例えば ​​:

Ad Be Cf Ce Af Bd Bf Ae Cd

基本的に、これらの規則に従う ABC に def をランダムに割り当てる VBA マクロを書きたいと思います。AB C を含むセルの下に def を含むセルを配置することで、マクロにこれを表示させたいと思います。

申し訳ありませんが、これを行うためのコードをまだ書き込もうとしていません。私は VBA と stackexchange が初めてで、この問題を説明するのに少し苦労しました。

乾杯

4

1 に答える 1

0

行の先頭に4つのスペースがある場合、その行は固定サイズのフォントで出力されます。これはコードに使用されますが、探しているものの画像を作成することもできます。私の最善の推測はあなたがこのようなものを持っているということです:

   |  A  |  B  |  C  |  D  |  E  |  F  |  G  |  H  |  I  |  J  |
 --+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
 1 |  A  |  B  |  C  |     |     |     |  d  |  e  |  f  |     |
 2 |     |     |     |     |     |     |     |     |     |     |
 3 |     |     |     |     |     |     |     |     |     |     |

この開始位置から、以下のコードが作成されます。

   |  A  |  B  |  C  |  D  |  E  |  F  |  G  |  H  |  I  |  J  |
 --+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
 1 |  A  |  B  |  C  |     |     |     |  d  |  e  |  f  |     |
 2 |     |     |     |     |     |     |     |     |     |     |
 3 |  Ad |  Ae |  Af |  Bd |  Be |  Bf |  Cd |  Ce |  Cf |     |

私の出力値はあなたのものと同じ順序ではありませんが、それはあなたのルールのリストにはありません。

最初の値のセットには、考えられる各シーケンスに1つずつ、合計3つのバージョンがあるとします。あなたは2番目と3番目のバージョンの目的を説明していないので、私はそれらを含めませんでした。

これが希望どおりでない場合は、要件の詳細な説明を提供する必要があります。

Option Explicit
Sub Permutate()

  Dim ColDestCrnt As Long

  Dim ColSrc1First As Long
  Dim ColSrc1Crnt As Long
  Dim ColSrc1Last As Long

  Dim ColSrc2First As Long
  Dim ColSrc2Crnt As Long
  Dim ColSrc2Last As Long

  Dim RowSrc1 As Long
  Dim RowSrc2 As Long
  Dim RowDest As Long

  ' Specify the position of the first set of source values
  RowSrc1 = 1
  ColSrc1First = 1      ' Column A
  ColSrc1Last = 3       ' Column C

  ' Specify the position of the second set of source values
  RowSrc2 = 1
  ColSrc2First = 6      ' Column F
  ColSrc2Last = 8       ' Column H

  ' Specify the start the destination
  RowDest = 3
  ColDestCrnt = 1

  With Worksheets("Sheet1")

    ' Loop through first set of values and within that loop through
    ' the second set.
    For ColSrc1Crnt = ColSrc1First To ColSrc1Last
      For ColSrc2Crnt = ColSrc2First To ColSrc2Last
        ' Combine one value from the first set with one value in the second set.
        .Cells(RowDest, ColDestCrnt).Value = _
             .Cells(RowSrc1, ColSrc1Crnt).Value & _
             .Cells(RowSrc2, ColSrc2Crnt).Value
        ColDestCrnt = ColDestCrnt + 1
      Next
    Next
  End With

End Sub       
于 2012-11-01T09:26:11.943 に答える