作成日:2025-04-05, 更新日:2025-04-05
概要
| A | B | C | D | E | F | G | H | |
|---|---|---|---|---|---|---|---|---|
| 1 | 人 | 持込みA | 持込みB | 持込みC | 持込みD | 4/1 | 4/2 | 4/3 |
| 2 | 太郎 | 1 | 1 | 0 | 2 | o | o | o |
| 3 | 次郎 | 0 | 0 | 1 | 0 | o | o | |
| 4 | 三郎 | 2 | 2 | 1 | 0 | o |
のようなデータを下記のような形にしたい
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 人 | 持込みA | 持込みB | 持込みC | 持込みD | 4/1 | 4/2 | 4/3 | 集計 | 持込みA | 持込みB | 持込みC | 持込みD | ||
| 2 | 太郎 | 1 | 1 | 0 | 2 | o | o | o | 4/1 | ? | ? | ? | ? | ||
| 3 | 次郎 | 0 | 0 | 1 | 0 | o | o | 4/2 | ? | ? | ? | ? | |||
| 4 | 三郎 | 2 | 2 | 1 | 0 | o | 4/3 | ? | ? | ? | ? |
4/2、4/3、4/4のそれぞれに「o」がついている人の持込みA~持込みDの各総数を知りたい
SUMIFで頑張るかマクロを頑張るか...
SUMIFで頑張る
これぐらいのデータなら目視でもいいんだけど、数が多いと面倒
だからといって、マクロってのも面倒そうだから、sumif()で頑張ることにする
▼「カラム: K2」に列Fに「o」がある列Bの総数を出力
=SUMIF(F2:F4, "o", B2:B4)
この場合、列F~列Hのそれぞれを対象に列B~列Eの総数が欲しいので面倒
K~N列に下記をセットすればOK...だけど、手動入力にしても、連続データとしてコピーってのも面倒
▼列F(4/1)のそれぞれをL2~O2にセット
=SUMIF(F2:F4, "o", B2:B4) =SUMIF(F2:F4, "o", C2:C4) =SUMIF(F2:F4, "o", D2:D4) =SUMIF(F2:F4, "o", E2:E4)
▼列G(4/2)のそれぞれをL3~O3にセット
=SUMIF(G2:G4, "o", B2:B4) =SUMIF(G2:G4, "o", C2:C4) =SUMIF(G2:G4, "o", D2:D4) =SUMIF(G2:G4, "o", E2:E4)
▼列H(4/3)のそれぞれをL4~O4にセット
=SUMIF(H2:H4, "o", B2:B4) =SUMIF(H2:H4, "o", C2:C4) =SUMIF(H2:H4, "o", D2:D4) =SUMIF(H2:H4, "o", E2:E4)
列名を動的にセットして、SUMIFでがんばる
| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 人 | 持込みA | 持込みB | 持込みC | 持込みD | 4/1 | 4/2 | 4/3 | 列名 | 集計 | 持込みA | 持込みB | 持込みC | 持込みD | |
| 2 | 太郎 | 1 | 1 | 0 | 2 | o | o | o | F | 4/1 | ? | ? | ? | ? | |
| 3 | 次郎 | 0 | 0 | 1 | 0 | o | o | G | 4/2 | ? | ? | ? | ? | ||
| 4 | 三郎 | 2 | 2 | 1 | 0 | o | H | 4/3 | ? | ? | ? | ? |
上記のように対象となる列名を列Jにセット
あとは「=SUMIF(F2:F4, "o", B2:B4)」の「F」を置き換えればOK
このときに使うのが「INDIRECT()」ってヤツ。カラムと文字を連結することが可能らしい
▼「F2:F4」を「カラム: J2」の値に置き換える
INDIRECT(J2&"2:"&J2&"4")
※「F2:F4」を「F」「2:」「F」「4」に分割して「F」が「カラム: J2」に置き換わる
あとはコピペすればいいんだけど...「列J」や一部の行数は固定だから「$」をつけたい
「=SUMIF(F2:F4, "o", B2:B4)」の
・「F」は固定(列名固定)で列Jとしたいから「$J●」
・「2」は固定(行数固定)で「2」としたいから「$2」。「4」も同様
・「B」は「C」「D」「E」と移動してほしいのでこのまま
▼こんな感じになる
=SUMIF(INDIRECT($J2&"2:"&$J2&"4"), "o", B$2:B$4)
→これを他のトコにコピペすれば完了