• ベストアンサー

特定の列にある値を基準に分けて集計したい

いつもお世話になります。 Excel2003にて点数の集計をするにあたり、午前と午後で分けて集計をしようとしています。 シート1のA列には氏名が入り、B~F列まではカテゴリ1~5の点数(1~5点)が入り、G列には午前なら「0」、午後なら「1」の値を入力して集計を午前と午後で分けようと思っています。 求めたい集計結果としては、シート2に午前のカテゴリ1~5のそれぞれの合計点数と午後のカテゴリ1~5のそれぞれの合計点数なのですが、どのような方法を使ったらよいかわからず困っています。 関数なのか、VBAを使ったら良いのか、またどのような記述をしたらよいか教えて頂きたいのでよろしくお願いいたします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

シート1では1行目が項目名でA1セルに氏名、B1セルにカテゴリ1、C1セルにカテゴリ2・・G1セルに午前・午後とかの文字列があるとします。 シート2ではB1セルからF1セルにかけてそれぞれカテゴリ名を入力します。 A2セルには午前の集計と入力し、A3セルには午後の集計と入力します。 B2セルには次の式を入力してF2セルまでドラッグコピーしたのちに下の行にもオートフィルドラッグします。 =SUMIF(Sheet1!$G:$G,ROW(A1)-1,Sheet1!B:B) これでシート2には各カテゴリごとの午前と午後の集計が表示されますね。

nkhall
質問者

お礼

ご回答ありがとうございました。 ご指示いただきましたSUMIF関数で無事できました!! 完璧です!

その他の回答 (3)

回答No.3

ピボットテーブルを使うとこんな感じ ピボットテーブルウィザードから[レイアウト]ボタン 添付図参照 水色の線で囲まれたものがSheet2です ピボットテーブルは変更があっても自動的に反映されないので 参考まで

nkhall
質問者

お礼

ご回答ありがとうございました。 まさにやりたい事はこれなのですが、変更が自動的に反映されないというのが残念です。 今後の参考にさせていただきます。

noname#204879
noname#204879
回答No.2

Sheet1 1  NAME  CAT1 CAT2 CAT3 CAT4 CAT5 MorA 2  name1   3   5   2   3   4   0 3  name2   3   4   1   3   2   0 4  name3   3   5   2   4   4   1 5  name4   4   2   5   5   2   0 6  name5   3   1   2   5   3   1 7  name6   5   3   2   2   5   1 8  name7   1   5   1   4   3   0 9  name8   4   2   3   2   3   1 10 name9   1   1   3   2   3   1       Sheet2   A  B 1  0  1 2 62 73 3 4  0 62 5  1 73 Sheet2!A2: =SUMPRODUCT((Sheet1!$G2:$G10=A1)*(Sheet1!$B2:$F10)) Sheet2!B4; =SUMPRODUCT((Sheet1!G$2:G$10=A4)*(Sheet1!B$2:F$10))

nkhall
質問者

お礼

ご回答ありがとうございました。 SUMPRODUCT関数についてよく勉強してから、確認させていただきます。

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

こんばんは! 的外れならごめんなさい。 とりあえず↓の画像のような感じになれば良いのだという前提での回答です。 Sheet2の方はA・B列だけでB1セルに「0」または「1」を入力すれば良いと思うので、D・E列はあまり気にしないでください。 もし必要なのであれば同じ数式がD3・E3セルに入っています。 まず、Sheet2の氏名セルA3は =IF(COUNTIF(Sheet1!$G$2:$G$100,$B$1)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$100,SMALL(IF(Sheet1!$G$2:$G$100=Sheet2!$B$1,ROW($A$1:$A$99)),ROW(A1)))) これは配列数式になってしまいますので、この画面からそのままコピー&ペーストしただけではエラーになると思います。 A3セルに貼り付け後、F2キーを押すか、数式バー内で一度クリックしてください。 編集可能になりますので、Shift+Ctrl+Enterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 そして、B3セルは =IF(A3="","",SUM(OFFSET(Sheet1!$B$1:$F$1,MATCH(A3,Sheet1!$A$2:$A$100,0),,1))) (これは配列数式ではありません!) 最後にA3・B3セルを範囲指定し、B3セルのフィルハンドルで下へコピーすると 画像のような感じになります。 尚、数式はSheet1の100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてください。 以上、参考になれば幸いですが、 最初に書いたように的外れならごめんなさいね。m(__)m

nkhall
質問者

お礼

ご回答ありがとうございました。 画像付きでご説明いただき、大変わかり易かったです。 説明文も大変丁寧に記載していただき、本当にありがとうございました。 ただ、申し訳ないのですが、やりたい事と少しちがっていましたので、今後の参考にさせていただきます。 御丁寧なご回答をいただき、重ねて御礼申し上げます。