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も見ています
-
誕生日にもらった意外なもの
みなさんがもらった誕生日プレゼントで面白いものがあったらぜひ教えてください!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルで重複しない組み合わせ出力方法
Excel(エクセル)
-
エクセルでnCr (組み合わせ)の作成方法
Excel(エクセル)
-
Excelですべての組合せ(重複組合せ)を出力するには?
Visual Basic(VBA)
-
-
4
Excelでの全通りの組み合わせ出力方法(文字列)
Excel(エクセル)
-
5
エクセルにて複数のセルの組み合わせの重複を削除するには?
Excel(エクセル)
-
6
【エクセル】2列間で、同じ組み合わせのものを抽出したい。
Excel(エクセル)
-
7
人員ペア一覧表を作成したいです。
Excel(エクセル)
-
8
エクセルVBA 全ての組み合わせを作る
Excel(エクセル)
-
9
重複順列
数学
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「初め」か「始め」どちら?
-
この文字の変換方法を教えて
-
”ギリギリ” を丁寧に言うには
-
「取組」と「取り組み」の違い
-
「時間がたつ」の「たつ」は、...
-
「お客様お一人おひとり」と書...
-
次頁はなんと読みますか?
-
「ん」一文字の漢字はありますか?
-
対策を採る?取る?
-
「~していただきまして、あり...
-
「基」と「元」の使い方
-
「50万円を超える」は50万円以...
-
木へんに夕に卩ってどう読みま...
-
国語 故郷 中学3年生です! 私...
-
0(ゼロ)とO(オー)の書き分け...
-
魚へんの下の点々が大
-
ネ+豊 でなんと読みますか?
-
住所の「字(あざ)」の英文表...
-
日差しが差す(陽射しが射す)...
-
文章にする時、ひらがなの「と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「初め」か「始め」どちら?
-
”ギリギリ” を丁寧に言うには
-
この文字の変換方法を教えて
-
「取組」と「取り組み」の違い
-
「時間がたつ」の「たつ」は、...
-
「ん」一文字の漢字はありますか?
-
「お客様お一人おひとり」と書...
-
対策を採る?取る?
-
「基」と「元」の使い方
-
「50万円を超える」は50万円以...
-
次頁はなんと読みますか?
-
魚へんの下の点々が大
-
木へんに夕に卩ってどう読みま...
-
「~していただきまして、あり...
-
0(ゼロ)とO(オー)の書き分け...
-
数を数える、「正」の字。読み...
-
“わく”に宛てる漢字について
-
文章にする時、ひらがなの「と...
-
奥さんと同じ布団で寝ると勃起...
-
日差しが差す(陽射しが射す)...
おすすめ情報
無知で申し訳ないのですが、マクロが何かわからないけれどお願いしたいです。
マクロが実行されましたという表示を出すことができました。
全パターン出力することができました!ありがとうございます!