Excel VBA質問箱 IV

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

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


3287 / 13646 ツリー ←次へ | 前へ→

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

【63094】ランダムにグループ分けを行い、それをか...
質問  satoko  - 09/10/7(水) 20:18 -

引用なし
パスワード
   失礼いたします。めちゃくちゃ初心者です。

ランダムで変わる数値を、上から順番に何個かずつのグループに分け、それを記憶させて、
2回目以降はグループ内で被らないようにすることって出来ますか?

解りづらくてすいません。つまり、

1.データベースを作成します。1→A、2→B…みたいな感じで。
2.乱数で数値をランダムに発生させます。
3.Rank関数で、乱数に順位をつけます。
4.乱数の順位とlookup関数でデータベースからA、B…を引っ張ってきます。
5.上から順に、【IGr】【IIGr】…と何個かずつでグループ分けをします。
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】というように、
同じ組み合わせが無いようになるまで乱数の再計算を繰り返す…といった処理を行いたいのですが…。

説明が下手で申し訳ないです。
組み合わせを記憶して、同じ組み合わせがでないようにするっていう処理はできるのでしょうか??

ご回答お願いいたします。

【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



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

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

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

【63104】Re:ランダムにグループ分けを行い、それ...
お礼  satoko  - 09/10/8(木) 19:44 -

引用なし
パスワード
   ▼ichinose さん:
ご説明ありがとうございます!

VBAについては最近合間をぬって少しずつ勉強し始めたところで…orz

やっぱり難しいですね^^;
なんとなく、ご紹介いただいたもので私がやりたいことは伝わってる気がするんですが…。

少しずつですが、もっと勉強します!

ご丁寧な解説ありがとうございました!

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