• ベストアンサー

エクセルの数式を教えて下さい

このようなデータがあるとして この中から6人を選び各言語の合計点の組み合わせを全通り出したいのですが 数式を教えて頂けないでしょうか 色々試したのですが全く解決できずに困っています 宜しくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VBAになりますが、一例です。 元データはSheet1にあり、お示しの画像通り2行目が項目行で3行目からデータがあるとします。 Sheet2に表示するようにしてみました。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, k As Long, L As Long, M As Long, N As Long Dim lastRow As Long, cnt As Long, myCol As Long, c As Range, wS As Worksheet Set wS = Worksheets("Sheet1") With Worksheets("Sheet2") .Cells.ClearContents lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row '6組の組み合わせの場合 For i = 3 To lastRow - 5 For j = i + 1 To lastRow - 4 For k = j + 1 To lastRow - 3 For L = k + 1 To lastRow - 2 For M = L + 1 To lastRow - 1 For N = M + 1 To lastRow cnt = cnt + 1 With .Cells(cnt, "A") .Value = wS.Cells(i, "A") .Offset(, 1) = wS.Cells(j, "A") .Offset(, 2) = wS.Cells(k, "A") .Offset(, 3) = wS.Cells(L, "A") .Offset(, 4) = wS.Cells(M, "A") .Offset(, 5) = wS.Cells(N, "A") End With Next N Next M Next L Next k Next j Next i For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row For j = 1 To 6 Set c = wS.Range("A:A").Find(what:=.Cells(i, j), LookIn:=xlValues, lookat:=xlWhole) .Cells(i, "G") = .Cells(i, "G") + WorksheetFunction.Sum(Range(wS.Cells(c.Row, "B"), wS.Cells(c.Row, "G"))) Next j Next i End With MsgBox "処理完了" 'この行まで End Sub ※ A列データは何人でも対応できるようにしています。 上記コードはその中の6人を重複がないように組み合わせて表示しています。 >各言語の合計点の組み合わせを全通り出したいのですが の部分で少々引っかかりますが、 とりあえず6人の合計をG列に表示するようにしています。m(_ _)m

その他の回答 (3)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>この中から6人を選び各言語の合計点の組み合わせを全通り出したいのですが 何をしたいのかが不明瞭です。 11人の中から6人を選ぶ組み合わせは回答No.1のように462とおりとすれば1つの数式を使って対象セルへコピーするのは無理ではないでしょうか? 11人の中から合計点の大きい順に6人を選ぶ場合は4位が2人、6位が3人となり6位は誰を選ぶかが決断できません。 各言語に倍率を付ければ順位が重複しないように出来るかも知れません。(貼付画像参照) >色々試したのですが全く解決できずに困っています 試した数式を提示して目的と結果の違いを説明すればあなたの数式を校正できると思います。

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.2

「色々試したのですが全く解決できずに困っています」  このままでは無理です。H列に合計点を出したい人にだけ「1」を入力し、 I3を「=$H3*B3」として、11人分&6言語分セルをコピーして、その値の合計を出すように すれば、色々な組合せで合計点が出せますが。

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.1

>この中から6人を選び各言語の合計点の組み合わせを全通り出したいのですが 11人から6人ですから 11!/(6!*5!)=11*3*2*7の組み合わせがあるのですが、本気ですか?

sleeppig
質問者

補足

>shintaro-2様 本気です 数式をご存知なのですか?

関連するQ&A