目次
このチュートリアルでは、ExcelのVLOOKUP関数とSUMまたはSUMIF関数を使用して、1つまたは複数の基準に基づいて値を検索して合計する方法を示す、高度な数式の例をいくつか紹介します。
ある特定の値のすべてのインスタンスを特定し、そのインスタンスに関連する他の値を合計するサマリーファイルをExcelで作成しようとしていますか? それとも、指定した条件を満たす配列内のすべての値を見つけ、別のワークシートから関連する値を合計する必要がありますか? あるいは、より具体的な課題に直面しているのかもしれません、例えば、以下の表を調べています。会社の請求書から、特定のベンダーの請求書をすべて特定し、すべての請求書の値を合計するのですか?
タスクは様々ですが、本質は同じです - Excelで1つまたは複数の条件で値を検索して合計することです。 どんな値? あらゆる数値です。 どんな条件? あらゆる : ) 数値または正しい値を含むセルへの参照から始まり、論理演算子やExcel式が返す結果で終わります。
では、Microsoft Excelには上記のような作業を助ける機能があるのでしょうか? もちろんあります!ExcelのVLOOKUPやLOOKUPとSUMやSUMIF関数を組み合わせることで解決できます。 以下の数式例は、これらのExcel関数の動作と実際のデータへの適用方法を理解するのに役立つはずです。
これらの例は、VLOOKUP関数の一般的な原理と構文に精通していることを前提とした高度な例であることに注意してください。 そうでない場合は、初心者のためのVLOOKUPチュートリアルの最初の部分 - Excel VLOOKUP構文と一般的な使用法があなたの注意に値することは確かです。
Excel VLOOKUPとSUM - 一致する値の合計を求める
Excelで数値データを扱う場合、別の表から関連する値を抽出するだけでなく、複数の列や行の数値を合計しなければならないことがよくあります。 このような場合、次のようにSUM関数とVLOOKUP関数を組み合わせて使用することができます。
ソースデータです。
例えば、数ヶ月分の売上が記載された商品リストがあり、各月ごとにカラムがあるとします。 ソースデータは、シート名 月次売上高 :
さて、各商品の売上高を合計したサマリー表を作りたい。
解決策としては、第3パラメータに配列( col_index_num 以下は、一般的な計算式です。
SUM(VLOOKUP()の場合 ルックアップ値 , ルックアップ範囲 , {2,3,...,n}, FALSE)) 。ご覧のように、2列目、3列目、4列目の値の合計を求めるために、第3引数に配列定数を用いて、同じVLOOKUP式の中で複数のルックアップを実行しているのです。
そして今度は、このVLOOKUP関数とSUM関数の組み合わせをデータに合わせて調整し、上の表のB列~M列の売上高の合計を求めましょう。
=SUM(VLOOKUP(B2, '月商'! $A$2:$M$9, {2,3,4,5,6,7,8,9,10,11,12,13})), FALSE)
重要! 配列の数式を作成するので、入力が終わったらEnterキーではなく、必ずCtrl + Shift + Enterキーを押してください。 そうすると、Microsoft Excelは数式を次のような中括弧で囲みます。
{=SUM(VLOOKUP(B2, '月商'!$A$2:$M$9, {2,3,4,5,6,7,8,9,10,11,12,13}, FALSE))} に相当する。
を押した場合 入力 キーを使用すると、配列の最初の値だけが処理されるため、不正確な結果が得られます。
ヒント:上のスクリーンショットで、数式がルックアップ値として[@Product]を表示しているのが気になるかもしれません。 これは、データをテーブルに変換したためです( インサート tab> テーブル 例えば、あるセルに数式を入力すると、その数式が自動的に列全体にコピーされ、数秒の時間を節約することができます)
このように、ExcelでVLOOKUP関数とSUM関数を使うのは簡単です。 しかし、特に大きな表を扱う場合には、これは理想的な解決策ではありません。 配列内の各値が個別にVLOOKUP関数を呼び出すため、配列式を使うとワークブックのパフォーマンスに悪い影響を与えることがあるからです。 したがって、配列内の値が多くなればなるほど、また配列式が多くなればなるほどワークブックを作成すると、Excelの動作が遅くなります。
SUMやVLOOKUPの代わりにINDEX関数とMATCH関数を組み合わせて使うことで、この問題を回避することができますので、次回以降、計算式の例をいくつかご紹介します。
このVLOOKUPとSUMのサンプルをダウンロードする
Excel VLOOKUP関数で他の計算を行う方法
先ほど、ルックアップテーブルの複数の列から値を取り出し、それらの値の合計を計算する例を説明しました。 同じように、VLOOKUP関数が返す結果を使って他の数学的計算を行うことができます。 ここでは、いくつかの計算式の例を紹介します。
操作方法 | 計算式の例 | 商品説明 |
---|---|---|
平均値を算出する | {=AVERAGE(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))}になります。 | この数式は、「ルックアップテーブル」のセルA2の値を検索し、同じ行の列B、C、Dの値の平均を計算する。 |
最大値検索 | {=MAX(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))}になります。 | この数式は、「ルックアップテーブル」のセルA2の値を検索し、同じ行のB、C、D列の最大値を見つけます。 |
最小値を探す | {=MIN(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))}になります。 | この数式は、「ルックアップテーブル」のセルA2の値を検索し、同じ行のB、C、D列の最小値を見つけます。 |
合計のパーセントを計算する | {=0.3*SUM(VLOOKUP(A2, 'Lookup Table'$A$2:$D$10, {2,3,4}, FALSE))}になります。 | この数式は、「Lookup table」のセルA2の値を検索し、同じ行のB、C、D列の値を合計し、その合計の30%を計算する。 |
注:上記の数式はすべて配列数式なので、Ctrl+Shift+Enterキーを押してセルに正しく入力することを忘れないでください。
先ほどの例の「売上集計」テーブルに上記の数式を追加すると、以下のような結果になります。
このVLOOKUPの計算サンプルをダウンロードする
LOOKUP AND SUM - 配列を検索し、一致する値の合計を求める。
この場合、ExcelのLOOKUP関数を使うと、VLOOKUP関数と同様に配列のデータも検索することができます。
例えば、顧客名、購入商品、数量が記載されたテーブルがあったとします。 メインテーブル また、商品価格を含む 2 番目のテーブル ( ルックアップテーブル あなたの仕事は、指定された顧客によって行われたすべての注文の合計を求める式を作成することです)。
ご記憶の通り、ルックアップ値(データの配列)が複数あるため、ExcelのVLOOKUP関数は利用できません。 代わりに、以下のようにSUM関数とLOOKUP関数を組み合わせて使用します。
=SUM(LOOKUP($C$2:$C$10,'ルックアップテーブル'!$A$2:$A$16,'ルックアップテーブル'!$B$2:$B$16)*$D$2:$D$10*($B$2:$B$10=$G$1))
これは配列式なので、Ctrl + Shift + Enterを押して完成させることを忘れないでください。
そして次に、各関数がどのように機能するかを理解し、自分のデータに合わせて微調整できるように、計算式の成分を分析しましょう。
SUM関数の目的は明白なのでしばらく置いておいて、掛け算される3つの成分に注目します。
LOOKUP($C$2:$C$10,'ルックアップテーブル'!$A$2:$A$16,'ルックアップテーブル'!$B$2:$B$16)
このLOOKUP関数は、メインテーブルのC列に記載された商品を検索し、対応する価格をルックアップテーブルのB列から返す。
D$2:$D$10
このコンポーネントは、メインテーブルのD列にリストされた各顧客が購入した各製品の数量を返します。 上記のLOOKUP関数が返す価格を掛けると、各購入製品のコストが得られます。
$b$2:$b$10=$g$1
この式は、B列の顧客名とセルG1の名前を比較し、一致すれば「1」、そうでなければ「0」を返します。 この式は、セルG1の名前以外の顧客名を「切り捨てる」ために使います。ゼロをかけた数がゼロであることは、誰もが知っていることだからです。
この式は配列式なので、ルックアップ配列の各値に対して上記の処理を繰り返します。 そして最後に、SUM関数ですべての乗算の積を合計します。 全然難しくないでしょう?
注意:LOOKUP式が正しく動作するためには、LookupテーブルのLookupカラムを昇順(AからZまで)にソートする必要があります。 ソートが許容できないデータでは、Leoが提案する素晴らしいSUM / TRANSPOSE式をチェックしてください。
このLOOKUPとSUMのサンプルをダウンロードする
VLOOKUPとSUMIF - &を検索し、条件を付けて値を合計します。
ExcelのSUMIF関数は、先ほど説明したSUMと同様に値の合計を求める関数ですが、指定した条件を満たす値のみを合計する点が異なります。 例えば、最も単純なSUMIFの式は次のようになります。 =SUMIF(A2:A10,">10")
は、セルA2〜A10の値のうち、10より大きい値を加算する。
これはとても簡単ですよね? では、もう少し複雑なシナリオを考えてみましょう。 営業担当者の名前とID番号をリストアップしたテーブルがあるとします( ルックアップテーブル 同じ ID と関連する売上高を含む別のテーブルがあります ( メインテーブル その際、2つの複雑な要因があります。
- メールテーブルには、同じIDの複数のエントリーがランダムな順序で含まれています。
- メインテーブルに「営業担当者名」列を追加することはできません。
そこで、まず、ある人の売上高をすべて求め、次に、求めた値を合計する式を作ってみましょう。
計算式に入る前に、SUMIF関数の構文について思い出してください。
SUMIF(range, criteria, [sum_range])レンジ
- このパラメータは自明であり、単に指定された基準で評価したいセルの範囲である。クライテリア
- 数式に合計する値を指定する条件です。 数値、セル参照、式、または他のExcel関数の形式で指定します。sum_range
- このパラメータはオプションですが、私たちにとっては非常に重要です。 これは、対応するセルの値が追加される範囲を定義します。 省略した場合、Excelは範囲引数(第1パラメータ)で指定されたセルの値を合計することになります。
上記の情報を念頭に置いて、SUMIF関数の3つのパラメータを定義してみましょう。 覚えているように、メインテーブルのセルF2に入力された名前の人が行ったすべての売上を合計したいのです(上の画像を参照してください)。
- レンジ - 営業担当者IDで検索しているので レンジ SUMIF関数のパラメータはメインテーブルのB列なので、B:Bの範囲を入力するか、データをテーブルに変換した場合は列名で代用することができます。
Main_table[ID]の場合
- 基準 - 別のテーブル(ルックアップテーブル)に営業担当者の名前があるので、VLOOKUP式で該当するIDを探します。 メインテーブルのセルF2に担当者の名前が書かれているので、この式で調べます。
VLOOKUP($F$2,Lookup_table,2,FALSE)を使用します。
もちろん、VLOOKUP関数の検索条件に名前を入力することもできますが、絶対セル参照を使用する方が、与えられたセルに入力されたどんな名前に対しても機能する普遍的な数式を作成できるため、より良い方法と言えます。
- 和の範囲 - 売上はC列の「Sales」にあるので、「Sales」と入力します。
Main_table[売上]について
.あとは、式のパーツを組み立てるだけで、SUMIF + VLOOKUPの式が完成します。
=SUMIF(Main_table[ID], VLOOKUP($F$2, Lookup_table, 2, FALSE), Main_table[Sales])。
このVLOOKUPとSUMIFのサンプルをダウンロードする
Excelでvlookupを行うための数式不要の方法
最後に、関数や数式を使わずにテーブルを検索、照合、結合できるツールをご紹介します。 Ultimate Suite for Excelに含まれるテーブルの結合ツールは、ExcelのVLOOKUPやLOOKUP関数の代わりとして時間を節約し使いやすく設計、開発されており、初心者にも上級ユーザーにも非常に役立つツールです。
数式を考える代わりに、メインテーブルとルックアップテーブルを指定し、共通の列を定義し、取得したいデータをウィザードに伝えるだけでよいのです。
もし、このアドインがあなたの仕事に役立つと思われるなら、以下のリンクから試用版をダウンロードしてください。
ダウンロード可能なもの
SUMとSUMIFを使ったVLOOKUP - 計算式の例(.xlsxファイル)
Ultimate Suite - 体験版 (.exeファイル)