2

利用可能な「スロット」が 4 つあります。私は4つの「オブジェクト」を持っており、オブジェクトの組み合わせを作成して、それぞれがローテーションの「スロット」に配置されるようにする必要があります。たとえば、これらのオブジェクトがある場合:

val1
val2
val3
val4

script/macro/etc を使用して値の範囲の組み合わせを作成し、これを作成します。

val1
val2
val3
val4

val2
val3
val4
val1

val3
val4
val1
val2

val4
val1
val2
val3

次に、6 つの「オブジェクト」があり、それぞれがすべてのスロットに配置する必要があるため、2 つのオブジェクトが含まれていない組み合わせが常に存在しますが、すべての組み合わせが完了すると、各オブジェクトは 1 つのスロットに 1 回アクセスします。

どの Web 検索キーワードを使用すればよいかわかりません。私は少し立ち往生しています。それを行う最善の方法は何ですか?Excel2013をインストールしています。

ありがとう。

編集。

Joe からの入力に基づいて、次のコードが作成されました。

Public Sub makeMore()
  Dim looper As Integer, colloop As Integer, numcols As Integer
  numcols = Cells(1, 1).Value
  For colloop = 1 To numcols
    For looper = Selection.Row To ((Selection.Row + Selection.Count) - 1)
      ActiveSheet.Cells(looper, colloop).Value = ActiveSheet.Cells((looper + colloop - 2) Mod numcols + 1, 1).Value
    Next looper
   Next colloop
End Sub

A1 の値「6」をシートに配置し、C4 から C9 の値「val1」「val2」「val3」「val4」「val5」「val6」を配置し、値を選択すると、数字が表示されます」シート全体に 6 インチの広がり。私が作成しようとしているのは、4 つの複数のセットであり、各「val」はすべてのセット全体で等しく表されます。ループの値設定に何かが欠けていると思います。

さらなるすべてのアイデアに感謝します。再度、感謝します。

4

2 に答える 2

1

これで十分です。O15 から # of rows の値を読み取らせました。プログラムの先頭にある定数に設定するか、どこかから読み込むか、メッセージボックスに入れるか、好きなようにできます。

Public Sub makeMore()
  Dim looper As Integer, colloop As Integer, numcols As Integer
  numcols = Cells(15, 15).Value
  For colloop = 2 To numcols
    For looper = 1 To 4
      ActiveSheet.Cells(looper, colloop).Value = ActiveSheet.Cells((looper + colloop - 2) Mod numcols + 1, 1).Value
    Next looper
   Next colloop

End Sub
于 2013-02-21T04:27:25.657 に答える
0

擬似コード ソリューション

Get reference to the data range
Copy range data to a variant array
Get reference to output range
for i = 1 to number of output sets
    write array to sheet
    rotate array data
    offset output range reference
next i

これをコーディングしてみて、行き詰まったら投稿してください

于 2013-02-21T04:23:16.697 に答える