ADVERTISEMENT

【Googleスプレッドシート】商品別の売上ランキング!RANK関数とSUMIFの組合せ

【Googleスプレッドシート】商品別の売上ランキング!RANK関数とSUMIFの組合せ
🛡️ 超解決

売上データから商品ごとの売上合計を集計し、ランキングを表示したい場面は多いです。エクセルでも可能ですが、GoogleスプレッドシートならRANK関数とSUMIF関数を組み合わせることで簡単に実現できます。この記事では、商品別の売上ランキングを作成する具体的な手順を解説します。

データが更新されるたびに手動で並べ替える手間を省き、自動的にランキングを計算する方法を身に付けましょう。関数の基本から応用まで、実際の数式例を交えて説明します。

【要点】RANK関数とSUMIF関数の組み合わせで商品別売上ランキングを自動計算する方法

  • SUMIF関数で商品別売上合計: 条件に合致する売上を合計し、各商品の総売上を算出します。
  • RANK関数で順位付け: 合計値に基づいて商品ごとのランキングを自動的に割り振ります。
  • 範囲の絶対参照: 数式をコピーする際にRANK関数の範囲がずれないよう絶対参照($)を正しく指定します。

ADVERTISEMENT

RANK関数とSUMIF関数の組み合わせの概要

RANK関数は、指定した数値が範囲内で何番目に大きいか(または小さいか)を返す関数です。SUMIF関数は、条件に一致するセルの数値を合計します。この2つを組み合わせると、まずSUMIFで商品ごとの売上合計を計算し、その合計値に対してRANK関数で順位を付けられます。データが追加・変更されても数式が自動的に再計算されるため、常に最新のランキングが表示されます。この方法は、商品数が多くても数式1つで対応できる点が魅力です。

商品別売上ランキングを作成する手順

ここでは、サンプルデータを使いながら具体的な手順を説明します。A列に商品名、B列に売上金額が入力されているものとします。商品名は重複しており、同一商品の売上を合計してからランキングを付けます。

  1. データを準備する
    A列に商品名、B列に売上金額を入力します。見出し行を1行目に設け、2行目以降にデータを並べます。例えば、A2:A100に商品名、B2:B100に売上金額があるとします。
  2. 商品別の売上合計を計算する列を追加する
    C列に商品ごとの売上合計を計算するため、C2セルに次の数式を入力します。=SUMIF($A$2:$A$100, A2, $B$2:$B$100)
    この数式は、A2:A100の範囲の中でC2と同じ商品名(A2)を持つ行のB2:B100の合計を返します。絶対参照($)で範囲を固定することで、下にコピーしても範囲がずれません。C2をC3以下にオートフィルでコピーすると、各商品の売上合計が表示されます。ただし、同じ商品の行には同じ合計値が表示される点に注意してください。
  3. ランキングを計算する列を追加する
    D列にランキングを表示します。D2セルに次の数式を入力します。=RANK(C2, $C$2:$C$100, 0)
    第1引数に順位を付けたい数値(C2)、第2引数に範囲($C$2:$C$100)、第3引数に「0」を指定すると降順(大きい順)のランキングになります。「1」を指定すると昇順(小さい順)です。ここでは売上合計が大きいほど1位にしたいため、0を指定します。範囲を絶対参照にすることで、D2を下にコピーしても正しく順位が計算されます。
  4. ランキング結果を確認する
    D列に「1」「2」「3」…と順位が表示されます。同順位がある場合は同じランクが繰り返され、次の順位が飛びます(例:1位が2つあると次は3位)。必要に応じて、RANK.EQ関数(同順位の扱いは同じ)やRANK.AVG関数(同順位に平均順位を割り当てる)も検討してください。

上記の手順で基本的なランキングは完成です。ただし、同じ商品が複数行ある場合、合計値が重複するためランキングも重複します。商品ごとに一意の順位を表示したい場合は、後述の注意点を参照してください。

ランキング作成時の注意点

同順位が発生する場合の扱い

SUMIFで計算した売上合計は、同一商品の行で同じ値になるため、RANK関数はそれらを同順位として扱います。例えば、商品Aと商品Bの合計が同じ場合、両方とも1位になり、次の順位は3位になります。この動作で問題なければそのまま使用できます。もし商品ごとに一意の順位を付けたい場合は、RANK関数の第2引数に重複を考慮した範囲を指定するか、COUNTIFを使って調整する方法があります。例えば、同じ順位の中で商品名のアルファベット順で差を付けるなどの工夫が必要です。

範囲の絶対参照を忘れるとエラーになる

SUMIFやRANKの範囲指定で絶対参照($)を使わないと、数式をコピーしたときに範囲がずれて誤った結果になります。特にRANK関数の範囲は全データを固定で参照する必要があるため、必ず$記号を付けてください。範囲が変わらないようにするには、数式を入力したセルを選択し、F4キー(Windows)またはCommand+Tキー(Mac)で参照を切り替えられます。

データ追加時の範囲拡張

後からデータ行を追加した場合、SUMIFやRANKの範囲が古いままでは新しいデータが反映されません。あらかじめ範囲を大きめに取るか(例:$A$2:$A$1000)、テーブル機能(Ctrl+T)を使って自動拡張する方法もあります。テーブルに変換すると、範囲が自動的に拡張されるため便利です。また、ARRAYFORMULAと組み合わせて範囲を自動調整することも可能ですが、ここでは扱いません。

ADVERTISEMENT

各関数の役割と特徴の比較

関数 役割 主な引数 使用例
SUMIF 条件に一致するセルの数値を合計 範囲, 条件, 合計範囲 =SUMIF(A2:A10,”りんご”,B2:B10)
RANK 数値の範囲内での順位を返す 数値, 範囲, 順序 =RANK(100,B2:B10,0)
RANK.EQ RANKと同じ動作(互換性のため推奨) 数値, 範囲, 順序 =RANK.EQ(100,B2:B10,0)
RANK.AVG 同順位に平均順位を割り当てる 数値, 範囲, 順序 =RANK.AVG(100,B2:B10,0)

まとめ

RANK関数とSUMIF関数を組み合わせることで、商品別の売上ランキングを自動計算できるようになりました。この方法なら、データが増えても数式を修正せずに最新の順位を表示できるため、営業レポートや在庫管理などに役立ちます。さらに応用として、QUERY関数を使った集計や、ピボットテーブルによる分析も検討してみてください。まずは今回紹介したSUMIFとRANKの基本形を実際のシートで試してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。