SUMPRODUCT関数を使えば、表の中から条件に合うものだけを合計することができます
- 複数の条件「月別」「商品名別」に合計する
- 「条件別に合計」する方法は複数あります
複数の条件「月別」「商品名別」に合計する
表から、「月」や「商品名」など複数の条件でデータを抽出して集計したいことがあると思います。
条件に合うものだけを抜き出して合計する方法は複数ありますが、「オートフィルター」や「アウトライン」などの方法は、"表(情報)" が更新(追加・修正)されるたびに作業をやり直す必要があります。
同様の作業を「毎月(毎日)」する場合などは面倒な作業ですが、「関数」や「ピボットテーブル」を使えば、表(情報)を更新(追加・修正)すると、即座にそれが集計表に反映されるのでその都度作業をする必要が無いのでとても便利です。
「月」と「商品名」の2つの条件で「売上」を合計する
縦方向に「月」、横方向に「商品名」を配置して複合集計でそれぞれの合計を求めます。
「条件別に合計」する方法は複数あります
特定の条件(複数)で、合計する方法は複数あり、それぞれ特徴があります。
"1"と"2"はコマンドを使う方法、"3" と "4"は関数を使う方法、"5"はVBA(プログラム)的な方法です。
- オートフィルター
- アウトラインの「小計」
- SUMPRODUCT関数
- SUMIFS関数
- ピボットテーブル
- コマンドを使う方法は、最も簡単な方法ですが更新(追加・修正)のたびに操作する必要があります。
- 関数を使う方法は作成する時は面倒ですが、一度作成しておけば "半自動" で更新されるので毎月(毎日)同じ操作をする場合に有効な方法です。
- VBA(プログラム)を使う方法は、更新も "半自動" で、「元の表(データ)」に手を加える必要が無い特徴があります。欠点はあまり知られていない方法なので使える人が限られていることです。
それぞれの方法に特徴があるので状況に応じて使い分ける必要があります。
1.オートフィルターを使って「月別」「商品名別」に合計する
フィルター機能を使えば、複数の条件から情報(データ)を抽出することができます。
この方法の欠点はこの機能だけでは「合計」を表示することができないことです。
「合計」を表示させるためには、"SUBTOTAL関数" を使う必要があります。
"オートフィルター" で情報を絞り込む
オートフィルター機能を使えば、簡単に情報を絞り込んで表示させることができます。
抽出した「データ」の合計を知りたい場合は、"SUBTOTAL関数" を使います。
「売上年月」の項目と「商品名」の項目(フィールド)にフィルターをかけて情報を絞り込んで表示させます。
条件に合わないデータ(行)は、"非表示" になり、フィルターを解除すれば元通り表示されます。
- フィルターをかける「表」のどこか1カ所を選択
- 「データ」タブを選択
- 「フィルター」をクリック
"SUBTOTAL関数"を使って、抽出結果の合計を表示
オートフィルターでは「合計」が表示されませんが、SUBTOTAL関数を使うことで「合計」を表示させることができます。
SUBTOTAL関数は、指定した範囲内を指定した方法で集計し、その集計結果を算出する関数です。
SUBTOTAL関数は、フィルターをかけて表示された部分だけを集計します。
合計の引数(方法)は「9」になります。
SUBTOTAL関数の「引数」
SUBTOTAL関数の「引数」には色々なものがあります。
「非表示の値を無視する」の "3桁の引数" は、Excel2003から追加された引数です。
この場合の「非表示・・・」は、「通常のコマンドでの非表示」のことで、「フィルタをかけることで非表示」となったものとは異なります。
オートフィルターを掛けることで、「非表示」になったデータ(行)は「非表示の値を含める」の "引数" を使っても集計対象からは除外されます。
今回のように引数を "9"にしても、非表示になった条件に合わないデータ(行)は合計値には含まれません。
「表」の一番下に合計が表示されるようにする
フィルターをかける「表」の一番下(最下行)に "SUBTOTAL関数" を使って「合計欄」を入力しておけば、オートフィルター機能で表示が絞り込まれても「表」の一番下(最下行)に合計が表示されるようになるので便利です。
2.アウトライン(小計)を使って、「月別」「商品名別」に合計する
「アウトライン」はシートで選択した複数あるいは単独の行や列を「グループ」として設定(グループ化)して、表示/非表示を切り替えることができる機能です
"アウトライン" を使う場合の注意点は、あらかじめ「基準になる項目(フィールド)で表を並べ替えておく」必要があることです。
アウトラインは上から順に同じデータをグループ化していく方法なので、離れた行に、同じデータがあると別のデータとして表示されてしまいます。
そして、最大の問題点は抽出の基準となる項目(フィールド)は1つだけです。
「月別」と「商品名」のように複数の条件を指定することはできません。
アウトラインは合計と総合計は自動で表示されます。
3."SUMPRODUCT関数"を使って、「月別」「商品名別」に合計する
SUMPRODUCT関数は、"引数の配列" の対応する要素間の積をまず計算し、その計算結果の合計を求める関数です。
合計したい「範囲(配列)」を指定するだけで、指定した範囲(※ 255個まで)の「合計」を求めることができます。
SUMPRODUCT関数で複数の条件に合うものを抽出
配列1の内容が少し複雑です、 配列1で「月」と「商品名」の2つの条件に合うものを "1" になるようにし、条件に合わないものを "0" になるようにし、その結果を配列2の「売上」と掛ける(*)ことで条件に合うものだけが合計に計上されるようにします。
※ 条件に合い "1" になった「データ(行)」の「売上」の数字が合計される
※ 条件に合わず "0" になった「データ(行)」の「売上」は合計されない
配列1が「1」になった「行」だけが、計上(抽出)される
[配列1] で、条件1の「売上年月」の項目(範囲)を "MONTH関数" を使って「月」に変換したものと「結果を表示する表」の「売上月」を比較し、それと条件2の「商品名」を同じく「結果を表示する表」の「商品名」と比較したものを「*」でかけ合わせることにより「月」と「商品名」に合致するものを抽出します。
4."SUMIFS関数"を使って、「月別」「商品名別」に合計する
Excel2007から追加された新しい関数 "SUMIFS関数" を使えば、「複数の条件」で合計することができます。
SUMPRODUCT関数と比較して、条件(引数)の設定は分かりやすいのですが、検索条件に「数式(MONTH関数)」を使うことができません。
※「月」を条件にする場合は"MONTH関数" を使って月のフィールド(項目)を追加します(※ 売上年月が「シリアル値」になっている場合のみ)
検索条件用の「月」のフィールド(項目)を追加する
SUMIF関数の "引数" に「月」を使うために、「売上年月(シリアル値)」からMONTH関数を使って「月」の項目(フィールド)を追加します。
※ セルの書式設定で「表示形式」を「月」にしても、"引数" には使えません
SUMIFS関数で複数の条件を設定する
SUMIFS関数を使うメリットは条件(引数)が分かりやすいことです。
3つ以上の条件(引数)の設定も簡単にできます。
※「関数の挿入」の機能を使えば、条件(引数)を簡単に入力することができます
「関数の挿入」の機能は、とても便利な機能です。
この機能を使えば、用意されたボックスに "範囲" や "セル番地" や "引数" を入力するだけで、「 ()カッコ」や「カンマ ,」は自動で入力されるので、「カッコが足りない」とかのエラーを回避することができます。
5."ピボットテーブル"を使って、「月別」「商品名別」に合計する
ピボットテーブルは「表から条件を抽出して集計表を作成」してくれる便利な機能です。
従来の "ピボットテーブル" は使いにくい(分かりにくい)面がありましたが、バージョンアップによりとても使いやすく(分かりやすく)なっています。
ピボットテーブルを使う最大のメリットは「元の表(データ)に手を加えない」ので何回でも集計方法を変更したり、条件を追加したりすることができます。
項目(フィールド)を追加したり、データを並べ替えたりすることなく指定した複数の条件でデータを抽出することができ、「元の表(データ)」を更新(追加・修正)
した場合もその結果が反映(更新)されます。
また、作成した「集計表と連動したグラフ」も簡単な操作で作成することができます。
「表」を指定して、"ピボットテーブル"を作成する
ピボットテーブルを作成する「表」を指定して、挿入タブから「ピボットテーブル」のコマンドを実行します。
※「表」は、"1つのテーブル" になっている必要があり、離れた位置の「項目(フィールド)」や「行」は、1つのピボットテーブルにすることができません。
- ピボットテーブルにする「表」のどこか1カ所を選択(カーソルを置く)する
- 「挿入」タブを選択
- 「ピボットテーブル」をクリック
- ピボッテーブルの作成ダイアログで、「テーブルまたは範囲を選択」の範囲が正しく選択されていることを確認(※ 基本的に自動で選択されます)
- 「OK」ボタンをクリック
「行」と「∑ 値」のボックスに項目(フィールド)をドラッグ
指定した「表(テーブル)」の項目(フィールド)が表示されるので、必要な項目(フィールド)を「行」や「∑ 値」のボックスにドラッグしていきます。
「シリアル値(日付)」のフィールド(項目)がある場合は自動で「月」のフィールド(項目)が追加され場ます。
「売上年月」を使うと「日」も集計対象に含まれるので、今回は自動で追加された「月」のフィールド(項目)を使います。
- 「商品名」の項目を「行」のボックスにドラッグ
- 「売上」の項目を「∑ 値」のボックスにドラッグ
- 「月」の項目を「行」のボックスにドラッグ
※ 「月」の項目は、"元の表" にはありませんが、自動的に作成(追加)されます
※ "元の表" にある、「売上年月」の項目を「行」のボックスにドラッグすると "日" までが集計対象になります
「日」を集計したい場合は「売上年月」をドラッグします
"グラフ" も作成することができます
ピボットテーブル(集計表)と連動した "グラフ" を作成することができます。
- ピボットテーブルを選択(カーソルを置く)して、「ピボットテーブル」タブを選択します
- 「ピボットグラフ」を選択
- グラフの挿入ダイアログで「縦棒」を選択
- 「集合縦棒」を選択
- 「OK」ボタンをクリック
「グラフ」を、別シートにする
- 移動する「グラフ」を選択
- 「デザイン」タブを選択
- 「グラフの移動」をクリック
- グラフの移動ダイアログで「新しいシート」を選択
- 「OK」ボタンをクリック
条件別に合計する方法は色々あります。
その中で、最も有効な方法は「ピボットテーブル」です。
ピボットテーブルを使えば、会議やプレゼン用の「資料」を作成したい場合に、元の表に手を加えることなく、別のシートで希望通りのレイアウトで「表」や「グラフ」を作成することができます。
「元の表と同一のシートに集計結果を表示したい」場合は "SUMPRODUCT関数" を使う方法が便利です。
「オートフィルターとSUBTOTAL関数を使う方法」は、"入力しながらリアルタイムで条件を変えてを確認する" 場合に便利です。
- 複数の条件「月別」「商品名別」に合計する
- 「条件別に合計」する方法は複数あります