今週も、複数の項目から総合ランキングを求めるテクニックを紹介していこう。「並べ替え」や「関数RANK()」を利用した場合、数値データにわずかな差しかなくても、それが明確にランキングとして表れてしまう。このような場合に関数MROUND()を使うと、数値を丸めた状態でランキングを算出できるようになる。

データとランキングの関係は適切か?

今回は、以下に示した表を使ってランキングの算出方法を紹介していこう。この表は、引越しを検討している人が、引越し先となる「賃貸物件の候補」をまとめた表となる。

  • 賃貸物件のデータをまとめた表

比較検討に用いたのは、部屋の「広さ」(平方メートル)、「家賃」(円)、駅まで「徒歩」で何分の3項目。もちろん、部屋が広くて、家賃が安く、駅に近い物件ほど「良い物件」となる。

前回の連載と同様に、関数RANK()で各項目のランキングを求め、それを「足し算」して総合ランキングを求めてみよう。

  • 関数RANK()で各項目のランキングを求める

  • 総合ランキングの算出

この結果は、「ハイム真伊那比」が総合1位、「Mynaviパティオ」と「ザ・パークMynavi」が総合2位タイというものになった。

簡易的な総合ランキングの算出は以上であるが、データをよく見ると、若干の疑問点が見えてくる。それは、数値データの差がわずかしかないのに、ランキングに明確な差が生じていることだ。

たとえば「広さ」の項目を見ると、23.84(㎡)、23.78(㎡)、23.76(㎡)といった3つのデータが、それぞれ4位、5位、6位にランキングされている。当然といえば当然の結果であるが、これら3つの物件は「ほぼ同じ広さである」と考えられないだろうか?

  • 「広さ」のデータとランキング

「家賃」の項目についても同様のことがいえる。以下の図で赤く囲ったデータは、それぞれ1000円の差しかないが、5位、6位、7位というランキングになっている。

  • 「家賃」のデータとランキング

こういった「わずかな差」によるランキングの違いが、総合ランキングに影響を与えている可能性も十分に考えられる。実際には大差がないのに、ランキングにすると大きな差になってしまう、というケースも十分にあり得るだろう。このような場合は、いちど数値データを丸めてからランキングを作成した方が理に適っているかもしれない。

データを丸めてランキングを算出

Excelには、数値データを「指定した数値の倍数」に丸める関数としてMROUND()という関数が用意されている。その書式は以下のとおりで、第1引数に「丸める前の数値」、第2引数に「基準となる数値」(倍数)を指定すればよい。

■関数MROUND()の書式
 =MROUND(数値, 倍数)

先ほどの例を用いて具体的に紹介していこう。まずは、丸めた数値データを入力するためのセルを用意する。今回は「広さ」と「家賃」の数値を丸めたいので、以下のようにセルを用意した。

  • 補正用のセルを挿入

続いて、関数MROUND()を使って数値データを丸めていく。今回は「広さ」を1㎡刻みに丸めたいので、第2引数には「1」を指定した。

  • 「広さ」を1㎡刻みに丸める関数MROUND()

この結果は「24」となる。つまり、「23.84」という数値データが「24」に丸められたことになる。ちなみに、関数MROUND()は「より近い方の倍数」に数値を丸める仕組みになっている。23.84を1刻みで丸めた場合は、結果として小数点以下が四捨五入されることになる。

あとは、関数MROUND()をオートフィルでコピーするだけ。これで「広さ」のデータを1刻みに丸めることができる。

  • 関数MROUND()をオートフィルでコピー

  • 1刻みに丸められた「広さ」

同様の手順で「家賃」のデータも丸めていく。今度は、2500円刻みにデータを丸めてみよう。第2引数に「2500」を指定した関数MROUND()を入力し、オートフィルでコピーする。

  • 「家賃」を2500刻みに丸める関数MROUND()

  • 2500円刻みに丸められた「家賃」

これで「広さ」を1㎡刻み、「家賃」を2500円刻みに丸めることができた。あとは、これらの数値を使ってランキングを求めるだけ。たとえば、「広さ」のランキングを求めるときは、以下のように関数RANK()を入力すればよい。このとき、関数RANK()の第2引数を絶対参照で指定するのを忘れないようにすること。

  • 「広さ」のランキングを求める関数RANK()

同様の手順で「家賃」のランキングを求め、オートフィルでコピーすると、改良版の「各項目のランキング」を求めることができる。ちなみに「徒歩」の項目は数値データを丸める必要がないため、実データのセル範囲(E6:E13)をもとにランキングを求めている。

  • 各項目のランキング

最後に、各項目のランキングを「足し算」して「総合ポイント」を算出し、総合順位を求めると、以下の図のような結果になる。

  • 総合ランキングの算出

「ハイム真伊那比」が総合1位であることに変わりはないが、「AXE Mynavi」が第2位にランクアップし、「Mynaviパティオ」と「ザ・パークMynavi」が総合3位タイにランクダウンしていることが確認できる。

これは、「わずかな差」により「広さ」と「家賃」のランキングが低くなっていた「AXE Mynavi」の評価が改善された結果といえる。具体的には、「広さ」が5位から4位に、「家賃」が7位から4位にランクアップした結果、総合順位もランクアップした、ということになる。

このように、関数MROUND()で数値データを丸めてからランキングを算出したほうが「より現実的なランキング」を求められる場合もある。

とはいえ、「いくつ刻みで数値を丸めればよいのか?」は悩みどころでもある。今回の例のでは「家賃」を2500円刻みに丸めているが、これが本当に最適なのかはわからない。この設定次第で総合順位が大きく変化してしまう可能性もあるため、絶対的に信頼できるランキングとはいえないだろう。あくまで「参考としてのランキング」と捉えておくべきである。

このように考えていくと、より正確なランキングを算出する手法として、「各項目をポイント化して評価する」という手法を思いつく方もいるだろう。そこで次回は、総合順位を求めるためのポイント換算について考察していこう。