Excelでは指定した数値の順位を求めることができます。
たとえば、成績表や売れ筋商品のランキングを求めるような場面ではRANK関数がおすすめです。RANK関数を活用することで、効率的に順位を表示できるようになります。
そこで今回の記事では、順位を付けるRANK関数の使い方を解説していきます。
Microsoft OfficeのバージョンがExcel2010以降の方に向けて、RANK.EQ関数とRANK.AVG関数についてもあわせてご紹介しますので、ぜひ参考にしてくださいね。
目次
RANK関数の書き方
RANK関数の構文は次の通りです。
RANK(数値,範囲,[順序]) |
RANK関数の構成要素には次の引数があります。
数値
範囲内での順位 (位置) を調べる数値は必ず指定します。
範囲
数値の範囲の配列またはその範囲への参照を必ず指定します。 なお、参照に含まれる数値以外の値は無視されるので注意が必要です。
順序
順序は任意であるため省略可能です。必要に応じて範囲内の数値を並べる方法を指定してください。たとえば
順序に 0 を指定するか、順序を省略すると、範囲内の数値が …3、2、1 のように降順に並べ替えられます。順序に 0 以外の数値を指定すると、範囲内の数値が 1、2、3、… のように昇順で並べ替えられます。 |
以上の2パターンを覚えておけば問題ないでしょう。
RANK関数の使い方
RANK関数では重複した数値は同じ順位とみなされます。
ただし、数値が重複しているとそれ以降の数値の順位がずれていきます。
たとえば、昇順に並べられた整数のリストがあり、そのリストに10が2度現れ、その順位が 5であるとき、11の順位は7となりますよね。そのため、順位が6の数値は存在しないことになります。
ランキングの目的によっては、同じ順位も考慮した方がよい場合もあります。
たとえば、前述した例では、10の順位を 5.5 に訂正した方がよいというケースです。
そのためには、下記の補正因子を RANK 関数の戻り値に加算します。
これは、順位を
- 降順 (順序に 0 を指定するか、省略した場合)
- 昇順 (順序に 0 以外の数値を指定した場合)
上記のいずれかで計算する場合にもRANK関数は使用できます。
同順位の補正因子=[COUNT(範囲) + 1 – RANK(数値, 範囲, 0) – RANK(数値, 範囲, 1)]/2 |
条件を付けて順位をつけたい場合
業務で、とある企業の売上データで「大阪支社」の中だけで順位を出したり、「本社」だけで順位を出したり、というケースもありますよね。
関数に慣れている方であれば、「RANKIF関数を使うのかな?」と想像するかもしれません。
しかしながら、ExcelにはRANKIF関数というものはありません。
結論からいうと、RANK関数はCOUNTIF関数で代用できるのです。
順位をつけるということは、調べたい数値が上から何番目か、もしくは下から何番目かを数えたいということですよね。
つまり、調べたい数値より大きい、もしくは小さい数値が何個あるか数えて、その個数に1を足せばよいのです。
そのように、調べたい数値より大きい(小さい)数値が何個あるか数える関数といえば、COUNTIF関数があります。
RANK関数はCOUNTIF関数で代用できる!
定番のCOUNTIF関数は、指定した単語に一致するデータの数を数えるだけでなく、特定の数値や日付といった部分一致を条件として数えることができる万能な関数です。COUNTIF関数の構文は以下の通りです。
COUNTIF(範囲, 検索条件) |
引数[範囲]に指定したセル範囲で[検索条件]に一致するデータの数を求めます。
このように、指定する引数は[範囲]と[検索条件]の2つのみなので、条件の指定方法も簡単です。
範囲
範囲は必須入力項目です。
検索の対象とするセルやセルの範囲を指定します。数値や配列、名前付き範囲、参照が指定できます。
検索条件
同じく検索条件も必須入力項目で「範囲」の中からセルを検索するための条件を、数値、式、セル範囲、または文字列で指定します。
文字列を指定する場合は、「”(ダブルクォーテーション)」で囲みます。
なお、COUNTIF関数で指定できるのは、単一の検索条件のみです。 複数の検索条件を指定する場合は、COUNTIFS関数を使用しますが、こちらについては後述します。
出典:Excel 作業の効率が上がる! 条件に合うセルを数える COUNTIF 関数を徹底解説
COUNTIF関数で使える比較演算子
検索条件で式を指定する際に比較演算子を使用することができます。
比較演算子を表にするとこのようになります。
演算子は、数式の要素に対して実行する計算の種類を指定します。 Excel では、計算の一般的な数学規則 (かっこ、指数、乗算と除算、および加算と減算、または頭字語のPEMDAS ) に従います。
さらにかっこを使用すると、その計算順序を変更することができます。
参考:Microsoft|Excel の数式に計算演算子を使用する
なお、「使用例」ではわかりやすくするために、「A」「B」で表しました。
実際にエクセルで使用する場合は「A1」「B2」のようにセル番地となります。
文書では「≧」や「≦」を使いますが、エクセルで使用する場合は「>=」「<=」のようになるので注意が必要です。
そのため、イコールは後ろに付けることをしっかり覚えておくとよいでしょう。
複数条件の場合はCOUNTIFS関数を使おう
続いては、Excelのリストから条件に一致するデータを検索して、件数を調べたい場合についてみていきましょう。単純に企業全体の売上データで、支社の順位を付ける場合はRANK関数使います。一方で、「支社別」といった対象を限定するなどの条件が付いた順位を計算する際には、COUNTIFS関数を使用します。
COUNTIFS関数の書き方
COUNTIFS関数の構文は次の通りです。
COUNTIFS (条件範囲 1, 検索条件 1, [条件範囲 2, 検索条件 2],…) |
COUNTIFS関数の構成要素には、次の引数があります。
条件範囲 1
対応する条件による評価の対象となる最初の範囲を必ず指定します。
条件 1
計算の対象となるセルを定義する条件を数値、式、セル参照、または文字列で必ず指定します。たとえば、条件は 32、”>32″、B4、”Windows”、または “32” のようになります。
条件範囲 2, 条件 2,・・・
追加の範囲と対応する条件で、任意で入力するため省略可能です。最大127個の範囲と条件を指定できます。
重要各追加範囲は、「範囲 1」という引数と同じ数の行および列が設定されている必要があります。 範囲はお互いに隣りあわせである必要はありません。 |
COUNTIFS関数の使い方
COUNTIFS関数のそれぞれの範囲の条件は、一度に1つのセルに適用されます。
つまり、関連する抽出条件を満たすすべての最初のセルの数が1ずつ増えていくということです。ですから、関連する抽出条件を満たすすべての2つ目のセルが1ずつ増加すると、もう一度すべてのセルが評価されるまで続けられます。
また、条件の引数が空のセルへの参照であった場合、空のセルは 0 とみなされます。
条件には、半角の疑問符 (?) または半角のアスタリスク (*) をワイルドカード文字として使用することができます。 ワイルドカード文字の疑問符は任意の 1 文字を表し、アスタリスクは 1 文字以上の任意の文字列を表します。 ワイルドカード文字ではなく、通常の文字として疑問符やアスタリスクを検索する場合は、その文字の前に半角のチルダ (~) を付けます。
RANK.EQ関数について
RANK.EQ関数はランクイコール関数と呼び、Excel2010で追加された関数です。
機能はExcel2007以前のRANK関数と同じで、用途を明確にするために名称が変更になりました。RANK.EQ関数を使うと、データを降順とか昇順に並べ替えることなく、順序をつけることができます。また、RANK.EQ関数の場合は、順位を求めたい数値と同じ数値が複数存在する場合、それぞれが同じ順位で表示されます。RANK.EQ関数の構文は次の通りです。
RANK.EQ(数値,範囲,[順序]) |
RANK.EQ関数の構成要素には次の引数があります。
数値
範囲内での順位 (位置) を調べる数値を必ず指定します。
範囲
数値の範囲の配列またはその範囲への参照を必ず指定します。なお、 範囲に含まれる数値以外の値は無視されます。
順序
任意のため省略可能ですが、必要に応じて範囲内の数値を並べる方法を指定します。
使い方
順序に 0 (ゼロ) を指定するか、順序を省略すると、範囲内の数値が…3、2、1 のように降順に並べ替えられます。
順序に 0 以外の数値を指定すると、範囲内の数値が 1、2、3、… のように昇順で並べ替えられます。
RANK.EQ 関数では、重複した数値は同じ順位と見なされます。 ただし、数値が重複していると、それ以降の数値の順位がずれていきます。 たとえば、昇順に並べられた整数のリストがあり、そのリストに 10 が 2 度現れ、その順位が 5 であるとき、11 の順位は 7 となります (順位が 6 の数値はありません)。
目的によっては、同順位も考慮した順位定義の使用が必要となる場合もあります。 たとえば、前の使用例では、10 の順位を 5.5 に訂正できた方がよい場合があります。 そのためには、下記の補正因子を RANK.EQ 関数の戻り値に加算します。 この補正因子は、順位を降順 (順序に 0 を指定するか、省略した場合) または昇順 (順序に 0 以外の数値を指定した場合) のどちらで計算する場合にも使用できます。
同順位の補正因子=[COUNT(範囲) + 1 – RANK.EQ(数値, 範囲, 0) – RANK.EQ(数値, 範囲, 1)]/2 |
ブック内の例では、RANK.EQ(A3,A2:A6,1) は3です。
補正因子は (5 + 1 – 2 – 3)/2 = 0.5 となるので、同順位を考慮して訂正した順位は 3 + 0.5 = 3.5 となります。
範囲内に1度だけ現れる数値であれば、その補正因子は0になるため、RANK.EQ関数の戻り値に対して同じ順位の調整を行う必要はありません。
RANK.AVG関数について
また、RANK.AVG関数も構文の作成方法や使い方は同じです。
RANK.AVG関数はExcelの数値のリストの中で、指定した数値の順位を返します。
返される順位は範囲内の他の値との相対的な位置となり、複数の値が同じ順位にあるときは平均の順位が返されます。構文は次の通りです。
RANK.AVG(数値,範囲,[順序]) |
RANK.AVG関数の構成要素には、次の引数があります。
数値
範囲内での順位 (位置) を調べる数値を必ず指定します。
範囲
数値の範囲の配列またはその範囲への参照を必ず指定します。 なお、範囲に含まれる数値以外の値は無視されます。
順序
任意のため省略可能ですが、範囲内の数値を並べる方法を指定します。
使い方
順序に 0 (ゼロ) を指定するか、順序を省略すると、範囲内の数値が…3、2、1 のように降順に並べ替えられます。
順序に 0 以外の数値を指定すると、範囲内の数値が 1、2、3、… のように昇順で並べ替えられます。
まとめ
いかがでしたでしょうか。
今回の記事では、RANK関数の使い方について解説してきました。
RANK関数は、部署での成績順位や顧客の売上金額に順位をつける場合にとても便利な関数です。4~5個といった数えられるほどのデータであれば目視で対応する方もいらっしゃるかもしれませんが、莫大な行数がある場合、手作業や目視は現実的ではありません。
Excelを使うときには関数の活用は必要不可欠です。
人的ミスを防ぐだけでなく、業務効率化にもつながるので、ぜひマスターしてくださいね。