- ベストアンサー
エクセルの数式を教えて下さい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 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)
- PXU10652
- ベストアンサー率38% (777/1993)
「色々試したのですが全く解決できずに困っています」 このままでは無理です。H列に合計点を出したい人にだけ「1」を入力し、 I3を「=$H3*B3」として、11人分&6言語分セルをコピーして、その値の合計を出すように すれば、色々な組合せで合計点が出せますが。
- shintaro-2
- ベストアンサー率36% (2266/6245)
>この中から6人を選び各言語の合計点の組み合わせを全通り出したいのですが 11人から6人ですから 11!/(6!*5!)=11*3*2*7の組み合わせがあるのですが、本気ですか?
補足
>shintaro-2様 本気です 数式をご存知なのですか?