|
▼satoko さん:
おはようございます。
>解りづらくてすいません。つまり、
例をもっと沢山提示しないとこの手の仕様を理解させるのは
大変ですよ!!
はっきりわかっていませんが・・・。
>6.例えば1回目が【IGr:A,B,C】で【IIGr:D,E,F】で【IIIGr:G,H,I】のとき、
>2回目は【IGr:A,D,G】【IIGr:B,E,F】【IIIGr:C,F,I】というように、
>同じ組み合わせが無いようになるまで乱数の再計算を繰り返す…といった処理を行いたいのですが…。
この例のみを取り上げてみると・・・、以前こんな投稿をしたことを
思い出しました。
www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=19957;id=excel
新規ブックにて、↑の投稿の通りコードを配置して・・・。
testというプロシジャーだけ以下と差し替えてください。
Sub test()
Dim g0 As Long
Dim 組合せ As Variant
Dim 組み分け数 As Long
Dim pat(0, 1) As Variant
Dim in_array As Variant
組み分け数 = 3
in_array = Array("A", "B", "C", "D", "E", "F", "G", "H", "I")
pat(0, 0) = 3
pat(0, 1) = 3
組合せ = dist_array(in_array, "-", 組み分け数, pat())
Range(Cells(1, 1), Cells(UBound(組合せ, 1) + 1, 組み分け数)).Value = 組合せ
End Sub
尚、リンク先のコードには未定義変数がたくさん使われています(反省)。
よって、各モジュールの先頭行には、
Option Explicit
を付けないようにしてください。
自動的に挿入されるような設定になっている場合、面倒でも削除してください。
本来は、Option Explicit
は付けた方が良いので、解読する気があるなら、御自分で変数宣言しても結構です。
これで
testを実行すれば、アクティブシートの先頭行から
A-B-C D-E-F G-H-I
A-B-C D-E-G F-H-I
A-B-C D-E-H F-G-I
A-B-C D-E-I F-G-H
A-B-C D-F-G E-H-I
・
・
・
こんなデータが表示されます。
私のコードもそうですが、他の投稿者の投稿も非常にボリュームのある
ものになっています。
本当に
>めちゃくちゃ初心者です
なら、結構大変ですよ!!
|
|