![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
席決め表を作っていて悩んでいます
例:60人で6テーブル(1卓10人)に割振ります
(人数は30~200 テーブルは5~20 1卓あたり5~10人で毎回変化します)
全員がランダムではなく この人はA卓、この人はB卓 など各テーブルに0~10人の指定が発生します
1つの卓が 10人 ー 指定の人数 = ランダムに指定する人数 となるのですが
来賓が多い場合は 10人ー指定10人=ランダム0人 という事もあります
そこで
RANDBETWEEN で 1~6の乱数を発生させ、各テーブルの規定人数に達した場合は発生しない またはスキップする様にすることは可能でしょうか?
また、RANDBETWEENではなくても他の手法で同様の結果を得る方法があればご教示願います
No.2ベストアンサー
- 回答日時:
こんにちは。
席ぎめの順位を決めるものだと理解しましたが、ご質問については、フルに理解をしているわけではありません。
>RANDBETWEEN で 1~6の乱数を発生させ、各テーブルの規定人数に達した場合は発生しない またはスキップする様にすることは可能でしょうか?
これは、人間が判断することではないかと思いましたので、それは触れないでおきました。
また、通して200人なら200をランダムに並べ替えるとは考えませんでした。
このマクロは、
6を入れれば、6までの乱数
4を入れれば、4までの乱数
8を入れれば、8までの乱数が、重複なくでます。
以下のように出力します。
3 2 6 4 1 5
6 1 4 5 2 3
1 2 4 3
5 3 1 2 6 7 4 8
'//標準モジュール
Sub RandomGenerating()
Dim tNum As Long
Dim pNum As Long
Dim arNum() As Variant
Dim arNum1 As Variant
Dim i As Long
Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1).Select '行の最後尾の下
pNum = Application.InputBox("席割の人数を入れてください", "席割の人数")
If Not IsNumeric(pNum) Then Exit Sub
If pNum = 0 Then Exit Sub
Randomize
ReDim arNum(1 To pNum, 1)
For i = 1 To pNum
arNum(i, 0) = i
arNum(i, 1) = Rnd() 'ランダムの発生
Next i
arNum1 = RankingPos(arNum)
For i = 1 To pNum
With ActiveCell
.Offset(, i - 1).Value = arNum1(i, 0)
End With
Next i
End Sub
Function RankingPos(iAr())
Dim i As Long
Dim j As Long
Dim Temp1 As Long
Dim Temp2 As Double
For i = UBound(iAr) To LBound(iAr) Step -1
For j = LBound(iAr) + 1 To i
If iAr(j - 1, 1) > iAr(j, 1) Then
Temp1 = iAr(j - 1, 0)
Temp2 = iAr(j - 1, 1)
iAr(j - 1, 0) = iAr(j, 0)
iAr(j - 1, 1) = iAr(j, 1)
iAr(j, 0) = Temp1
iAr(j, 1) = Temp2
End If
Next j
Next i
RankingPos = iAr()
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
4本足のテーブルの脚を2、3cm少...
-
すいてる時間帯で、ひとりで外...
-
よくある72cm平方のこたつ机を
-
テーブル脚のカット 失敗
-
ダイニングテーブル 既製かオ...
-
折りたたみ出来る脚?名前を教...
-
A of Bについて
-
ダイニングテーブルについて大...
-
中古家具の接着剤をうまくはが...
-
低いダイニングテーブル&チェ...
-
テーブルの足を短くしたいので...
-
いらっしゃらなかったので机に...
-
ホームセンターで買った座椅子...
-
本命卦から見た机の向きについ...
-
ダイニングテーブルの幅135セン...
-
イスを引く?
-
イラストを長時間、描いたり、...
-
内蔵ハードデスクを、USB外付け...
-
デスクの上に全面的に敷物を敷...
-
3点支持について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
すいてる時間帯で、ひとりで外...
-
テーブルの足を短くしたいので...
-
テーブル脚のカット 失敗
-
ダイニングテーブル?ちゃぶ台...
-
1歳4カ月の子が、テーブルの...
-
鉄パイプの机が揺れるのですが...
-
会社の応接室のテーブルはなぜ...
-
衝立を自作してみたい。
-
普段こたつのテーブルをつかっ...
-
机(安物)を買ったのですが、グ...
-
庭にテーブルを置きたいのです...
-
ホットカーペットの耐荷重
-
この天板?の用途と、再利用法...
-
ダイニングテーブルの大きさ。
-
BBQ時のテーブル
-
折りたたみ出来る脚?名前を教...
-
ストッケのトリップトラップを...
-
カウンターテーブル作成について
-
A of Bについて
-
犬をテーブルに上がらせなくす...
おすすめ情報