Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


19070 / 76733 ←次へ | 前へ→

【63100】Re:ランダムにグループ分けを行い、それをかぶらないようにする
発言  ichinose  - 09/10/8(木) 8:31 -

引用なし
パスワード
   ▼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



 こんなデータが表示されます。

私のコードもそうですが、他の投稿者の投稿も非常にボリュームのある
ものになっています。

本当に
>めちゃくちゃ初心者です
なら、結構大変ですよ!!
0 hits

【63094】ランダムにグループ分けを行い、それをかぶらないようにする satoko 09/10/7(水) 20:18 質問
【63100】Re:ランダムにグループ分けを行い、それを... ichinose 09/10/8(木) 8:31 発言
【63104】Re:ランダムにグループ分けを行い、それを... satoko 09/10/8(木) 19:44 お礼

19070 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free