
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
tatsumaru77さんの回答により、解決しているようなので、余計なお世話かもしれませんが、ご質問者のいう、
>仮に6人だとしたら15通りできて、AB, CD, EFの三つの組み合わせを
>1巡目とした>時に、2巡目に1巡目ではペアにならなかった人と全員
>がペアにできるようになる
という意味が競技会等のリーグ戦でいう「試合順」のことを意味しているのであれば、tatsumaru77さんのマクロとは異なる気がします。
EXCELでいずれかのセルに「=COMBIN(6,2)」と入力してみてくでさい。「15」と表示されるはずです。これは、6人から2人選ぶ組合せの数は15であることを意味しており、ご質問者の説明と一致しています。
次に、「=COMBIN(14,2)」と入力してみてくでさい。「91」と表示されるはずです。つまり、14人から2人選ぶ組合せの数は91であり、上記の14人のリーグ戦の試合数は91試合であるということになります。
従って、ご質問の意図がリーグ戦の試合順の意味と同等だとすると、91種類の組合せを列挙することになります。
単純に列挙するだけなら、それほど困難ではないのですが、ご質問者のいう1巡目、2巡目という考え方をいれるとちょっと工夫が必要になります。。
つまり、例えばA-B、A-C、A-D、A-E、A-F・・・のように数学的・機械的に列挙したとすると、Aさんは連続して13試合行うことになってしまうからです。
これを回避する方法をEXCEL数式で作成すると添付画像のようなものになると思います。
(1)一巡目は手入力でA~Nを添付画像のように入力します。
(2)二順目としてB2セルに入力したAを固定して、他のセルに入力された文字を時計回りにひとつづつ移動させます。
(3)そのための数式は添付画像を例にすると、B4セルに「=B2」、C4セルに「=B3」、D4セルに「=C2」を記述し、D4セルの数式をH4セルまで右方向へコピー、さらに、B5セルに「=C3」を記述し、G5セルまで右方向へコピー、最後にH5セルに「=H2」を記述します。
(4)三巡目以降は二巡目の「B4~H5」の範囲を選択した状態で下方向へオートフィル等で13巡目(14人から2人づつ【14÷2=7】の7試合を一巡として91試合を表示するので【91÷7=13】)までコピーします。
この手順で添付画像のような表が完成します。
この表の見方は、説明するまでもないと思いますが、一巡目の組合せは「A-N」「B-M」「C-L」「D-K」「E-J」「F-I」「G-H」の7組からスタートするということになります。

No.5
- 回答日時:
No4です。
もし、6人のケースで確認したいなら
persons = "ABCDEFGHIJKLMN" を
persons = "ABCDEF"
に変えてください。
人数を減らす分には構いませんので、その場合は偶数の人数になるようにしてください。
現在14人ですが、これ以上人数を増やすと劇的に所要時間が増えるので、
(たぶん終わらなくなります)やめておいた方が良いかと思います。
No.4
- 回答日時:
以下のマクロを標準モジュールに登録してください。
結果はSheet1に出力されるので、空のSheet1を作成しておいてください。
こちらの環境では完了までに約1分半かかりました。
Option Explicit
Dim ctr As Long
Public Sub 組み合わせ()
Dim i As Long
Dim j As Long
Dim t1 As Double
Dim t2 As Double
Dim persons As String
t1 = Timer
ctr = 0
persons = "ABCDEFGHIJKLMN"
Application.ScreenUpdating = False
Call combination("", persons)
Application.ScreenUpdating = True
t2 = Timer
MsgBox ("完了 所要時間(秒)=" & t2 - t1)
End Sub
Private Sub combination(ByVal comb As String, ByVal persons As String)
Dim i As Long
Dim wcom As String
Dim wper As String
Dim p1 As String
Dim p2 As String
If Len(persons) = 0 Then
Call print_out(comb)
Exit Sub
End If
p1 = Mid(persons, 1, 1)
For i = 2 To Len(persons)
p2 = Mid(persons, i, 1)
wcom = p1 & p2
wper = get_remain(persons, p1, p2)
Call combination(comb & wcom & "|", wper)
Next
End Sub
Private Function get_remain(ByVal persons As String, ByVal p1 As String, ByVal p2 As String)
get_remain = persons
get_remain = Replace(get_remain, p1, "")
get_remain = Replace(get_remain, p2, "")
End Function
Private Sub print_out(ByVal comb As String)
Dim arr As Variant
Dim i As Long
If ctr = 0 Then
Worksheets("Sheet1").Cells.ClearContents
End If
ctr = ctr + 1
comb = Left(comb, Len(comb) - 1)
arr = Split(comb, "|")
For i = 0 To UBound(arr)
Worksheets("Sheet1").Cells(ctr, i + 1).Value = arr(i)
Next
End Sub
No.3
- 回答日時:
No2です。
追伸:
もし、マクロを実行するのは面倒なので、結果だけ、ほしいという場合は、
以下のようなテキストファイルをどこかにアップし、それをダウンロードしていただくことは可能です。
AB CD EF GH IJ KL MN
AB CD EF GH IJ KM LN
AB CD EF GH IJ KN LM
AB CD EF GH IK JL MN
AB CD EF GH IK JM LN
AB CD EF GH IK JN LM
・・・以下続く・・・・
テキストファイルでなく、excelのファイルが欲しいという場合は、
excelファイルでも可能です。(セキュリティを考えるとテキストファイルの方が安心かもしれません)
excelファイルの場合は、添付図のような内容になります。

No.2
- 回答日時:
>マクロが何かわからないけれどお願いしたいです。
まず、あなたの環境でマクロを実行できるようにする必要があります。
下記URLを参照して、その環境を設定してください。
https://office-hack.com/excel/macro-enable/
次に、マクロを登録します。
下記URLを参照して、登録及び実行を行ってください。
https://ecdtejun.work/archives/2877
サンプルのマクロです。これを登録して、実行してください。
Public Sub 試験()
MsgBox ("マクロが実行されました")
End Sub
実行すると添付図のようなメッセージが表示されます。
それで、完了です。
そのメッセージが表示されましたら、再度、その旨を補足してください。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルで重複しない組み合わせ出力方法
Excel(エクセル)
-
エクセルでnCr (組み合わせ)の作成方法
Excel(エクセル)
-
Excelですべての組合せ(重複組合せ)を出力するには?
Visual Basic(VBA)
-
-
4
人員ペア一覧表を作成したいです。
Excel(エクセル)
-
5
エクセルにて複数のセルの組み合わせの重複を削除するには?
Excel(エクセル)
-
6
Excelでの全通りの組み合わせ出力方法(文字列)
Excel(エクセル)
-
7
仕事のシフトを組むときに、シフトが同じになる回数を均等にしたいんですが
Excel(エクセル)
-
8
組み分け
数学
-
9
重複しないグループ分けをエクセルで
Excel(エクセル)
-
10
全員と同じグループを経験できるようにグループ分け
数学
-
11
EXCEL-同じ組み合わせになった回数
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「初め」か「始め」どちら?
-
この文字の変換方法を教えて
-
「時間がたつ」の「たつ」は、...
-
”ギリギリ” を丁寧に言うには
-
「~していただきまして、あり...
-
「お客様お一人おひとり」と書...
-
対策を採る?取る?
-
中立な意見は漢字でなんて言い...
-
「取組」と「取り組み」の違い
-
「基」と「元」の使い方
-
次頁はなんと読みますか?
-
ひらがなの「みなさん」と漢字...
-
「所要時間は1時間程度です」は...
-
「50万円を超える」は50万円以...
-
エクセルでセルの中身が漢字か...
-
日差しが差す(陽射しが射す)...
-
住所の「字(あざ)」の英文表...
-
文章で対象者を「人」というか...
-
奥さんと同じ布団で寝ると勃起...
-
齋という漢字を口で説明するに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「初め」か「始め」どちら?
-
この文字の変換方法を教えて
-
”ギリギリ” を丁寧に言うには
-
「時間がたつ」の「たつ」は、...
-
「~していただきまして、あり...
-
「お客様お一人おひとり」と書...
-
対策を採る?取る?
-
次頁はなんと読みますか?
-
「取組」と「取り組み」の違い
-
「基」と「元」の使い方
-
「所要時間は1時間程度です」は...
-
文章にする時、ひらがなの「と...
-
文章で対象者を「人」というか...
-
魚へんの下の点々が大
-
「50万円を超える」は50万円以...
-
エクセルでセルの中身が漢字か...
-
新人から上司へ飲みの誘い
-
ひらがなの「みなさん」と漢字...
-
相手の氏名の漢字表記をたずね...
-
住所の「字(あざ)」の英文表...
おすすめ情報
無知で申し訳ないのですが、マクロが何かわからないけれどお願いしたいです。
マクロが実行されましたという表示を出すことができました。
全パターン出力することができました!ありがとうございます!