
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excel 知恵を下さい。 下記表は、例です。本来の表のデータ量は、1000件以上あります… A列:
Excel(エクセル)
-
エクセルのソート方法について
Excel(エクセル)
-
Excelにて、下記のようなデータを月だけ変えて下にドラックしていきたいです。どうすれば良いですか?
Excel(エクセル)
-
-
4
余計なお世話的な「入力規則」?対策は?
Excel(エクセル)
-
5
excelで同日を除いて数えたい
Excel(エクセル)
-
6
Excelで2つの条件のうちどちらかにあてはまるときの数式を教えてください。
Excel(エクセル)
-
7
Excelの関数詳しい方お願いします。
Excel(エクセル)
-
8
Excel教えてください。 下記のことが出来るのは、マクロですか?条件付き書式でしょうか、、?知恵を
Excel(エクセル)
-
9
Excel この式はどんな意味でしょうか。。。
Excel(エクセル)
-
10
Excelで数式またはマクロを使用してできるか教えてください。
Excel(エクセル)
-
11
Excel差分がどれか割り出す方法
Excel(エクセル)
-
12
エクセルのユーザ定義にて、電話番号の一部を非表示にできますか?
Excel(エクセル)
-
13
10円の誤差が分からない
Excel(エクセル)
-
14
Excel 値を返す数式についてです
Excel(エクセル)
-
15
年間仕事用シフトカレンダーに、日勤 夜勤 休み に色分けをした。
Excel(エクセル)
-
16
エクセルのワークシートを簡単に別ファイルにする方法は?
Excel(エクセル)
-
17
エクセルの数式で教えてください。
Excel(エクセル)
-
18
Excelです。 Excelしてたら 点線?みたいのが出て来ました これは何ですか?どうやったら消せ
Excel(エクセル)
-
19
エクセル変換方法
Excel(エクセル)
-
20
Excelの空文字判定について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
「~していただきまして、あり...
-
5
対策を採る?取る?
-
6
ネ+豊 でなんと読みますか?
-
7
お礼は「有難う御座います」で...
-
8
「くださりました」と「くださ...
-
9
「取組」と「取り組み」の違い
-
10
小6なんですけど、毎日出る宿題...
-
11
「時間がたつ」の「たつ」は、...
-
12
「バビロンシステム」ってなん...
-
13
「50万円を超える」は50万円以...
-
14
とても迅速な対応をして頂きあ...
-
15
思うと想うの使い分け
-
16
「お客様お一人おひとり」と書...
-
17
カラメル色素は天然物由来の着...
-
18
エクセルでセルの中身が漢字か...
-
19
文章で対象者を「人」というか...
-
20
日差しが差す(陽射しが射す)...
おすすめ情報
公式facebook
公式twitter
無知で申し訳ないのですが、マクロが何かわからないけれどお願いしたいです。
マクロが実行されましたという表示を出すことができました。
全パターン出力することができました!ありがとうございます!