残業を減らす!Officeテクニック

Excelの集計作業はもっと簡略化できる! UNIQUE関数との組み合わせで簡単&正確に

UNIQUE関数との組み合わせですばやく正確に集計できる

 Excelの作業として、条件に一致するデータを数えたり、数値を合計したりする集計があります。一般的にCOUNTIF / COUNTIFS関数やSUMIF / SUMIFS関数を利用しますよね。例えば、以下のような表で、製品ごとの売上合計を求めるなら、SUMIF / SUMIFS関数を使います。

セルI2には「=SUMIFS($F$2:$F$31,$C$2:$C$31,H2)」と入力してある。セルC2~C31からセルH2の製品名を探して、セルF2~F31の売上を合計している

 H列に入力してある製品名を条件にセルC2~C31を探して、一致する行のセルF2~F31の数値を合計しています。オートフィルでコピーすることを考慮して、引数[合計対象範囲]と[条件範囲]はセル範囲を絶対参照で指定しています。

 この数式に問題はありませんが、製品が増えた場合はどうしましょう? H列に製品を入力して、数式をコピーすれば解決でしょうか。しかし、追加された製品を見落とすかもしれませんよね。製品数が多ければなおさらです。

 今回は、SUMIF / SUMIFS関数といった集計に使う関数とUNIQUE関数を組み合わせて、手間なく正確に集計するコツを紹介します。数式のコピーも不要になりますよ。

一意の値を取り出すUNIQUE関数

 UNIQUE関数は指定したセル範囲から一意(ユニーク)な値を取り出します。構文は以下の通り。一般的に指定したセル範囲から下(列)方向に向かって、一意な値を取り出すことがほとんどですので、セル範囲だけ指定すると覚えてしまっても問題ありません。

UNIQUE関数の構文。一意な値を取り出したいセル範囲を[範囲]に指定する。[列の比較]はチェックする方向。TRUE:右(行)方向、FALSE:下(列)方向で指定する。省略した場合はFALSE。[回数指定]は、重複データの扱い方を指定する。TRUE:重複しない値のみ(1回のみ出現する値)を抽出、FALSE:重複値を除く。省略した場合はFALSE

 UNIQUE関数の結果はスピルで表示されるので、入力する数式は1つだけで済みます。セル範囲を指定するのが面倒なら「=UNIQUE(C:C)」のように入力しても構いませんが、その場合はタイトル行の値と空白行の結果「0」も表示されることを覚えておいてください。

セルH2に「=UNIQUE(C2:C31)」と入力する
セルC2~C31のうち、一意の値がスピルで表示された

 一意の値が一瞬で表示されました。SORT関数を組み合わせて並べ替えもしておきましょう。UNIQUE関数やSORT関数について詳しくはこちらの記事も参考にしてください。

セルH2の数式を「=SORT(UNIQUE(C2:C31))」と修正する
一意の値が昇順で並べ替えられた

スピルの結果を参照する

 あとはSUMIF / SUMIFS関数を入力するだけです。条件として、スピルで表示されているUNIQUE関数の結果を参照することがポイントです。

 先ほどの数式「=SORT(UNIQUE(C2:C31))」を入力したセルH2を参照する際に「H2#」のように指定すると、スピルの結果を参照できます。SUMIF / SUMIFS関数の結果もスピルで表示されるため、引数[合計対象範囲]と[条件範囲]は相対参照のままでOK、オートフィルも不要です。

セルI2に「=SUMIFS(F2:F31,C2:C31,H2#)」と入力する。引数[合計対象範囲]と[条件範囲]は相対参照のままで問題なし。引数[条件]に「H2#」のように指定する
製品名に対応する売上合計の結果がスピルで表示された

そのほかの関数でも同様

 数式中からスピルの結果を参照するテクニックは、COUNTIF / COUNTIFS関数やAVERAGEIF / AVERAGEIFS関数など、ほかの関数でも使えます。オートフィルでコピーする操作が面倒に感じたときに思い出してみてください。

スピルの結果は、COUNTIF / COUNTIFS関数やAVERAGEIF / AVERAGEIFS関数などの関数からでも参照可能