1/14/2018

Excel。1位~3位と最下位の順位によって判定評価の表示を変えたい【Ranking】

Excel。1位~3位と最下位の順位によって判定評価の表示を変えたい

<CHOOSE+RANK.EQ関数>

次のような表があります。

C列の売上高の1位~3位には、褒賞が出るので、
その金額を表示して、最下位の店舗には、
「改善案提出」という文字を表示したいというリクエストを
表現した表なのですが、
このような表を作るのには、どうしたらいいのでしょうか?

当然、順位を算出する必要があると考えますので、
RANK.EQ関数を使うことはわかりますが、
仮に、D列に順位を算出して、
それをもとに、E列にIF関数を使って褒賞欄を作って判定させるという方法を
考えると思いますが、

IF関数を使って、
1位だったら、2位だったら、3位だったらという分岐まではいいのですが、
結構面倒なのが最下位。

MIN関数を使って、その数値を同じだったら、
「改善案提出」と表示させるとすれば、MIN関数を使わないといけませんし、
それだったら、RANK.EQ関数で算出した順位は無駄になりますし、
かといって、店舗数を数えて、
その数と最下位の数値が合致するものを探すという条件を作るのも
COUNT関数を使ったりしてと、数式自体が煩雑になってしまします。

そこで、今回のような場合に有効なのが、CHOOSE関数です。

CHOOSE関数は、1だったら、2だったらというように、
多分岐処理をさせることが得意な関数なのです。

ということで、今回は、CHOOSE関数と順位を算出する、
RANK.EQ関数を組み合わせたテクニックでやってみたいと思います。

D2をクリックして、CHOOSE関数ダイアログボックスを表示しましょう。

インデックスには、RANK.EQ関数をネストしますので、
ボックス内をクリックして、
RANK.EQ関数ダイアログボックスを表示させましょう。

数値には、C2ですね。

参照は、全体の中でという意味ですから、
売上高ということで、$C$2:$C$9。

オートフィルで数式をコピーしますので、
絶対参照を忘れないように設定しましょう。

順序は、0を入力します。降順のランキング。つまりベスト順ですね。

ここで、OKボタンをクリックしてはいけませんね。
まだCHOOSE関数の数式を作っている最中ですから、
数式バーを使って、CHOOSE関数に戻りましょう。

値1は、1だったらというボックスですから、
今回は、1位だったらという意味になりますので、3万と入力します。

値2と値3にも表示したい文字を入力します。

値4~値7は、4位~7位までは何も表示しませんので、「””(空白)」を入力します。

そして、最後は最下位の8位には、”改善案提出”と入力しましょう。

OKボタンをクリックして、オートフィルを使って数式をコピーしましょう。

これで完成しましたね。

なお、D2の数式は、
=CHOOSE(RANK.EQ(C2,$C$2:$C$9,0),"3万","1.5万","1万","","","","","改善案提出")

数式バーで手入力もいいですが、
4位~7位までの空白の数を打ち間違える可能性が高いので、
ダイアログボックスをつかうほうがいいかもしれませんね。

このように、順位を算出したあとの判定をIF関数を使ってもいいのですが、
CHOOSE関数を使ってみるという方法もありますので、
何か機会がありましたら使ってみてはいかがでしょうか?