3/05/2020

Excel。A~E評価で一番いい評価を抽出するのは意外と大変です。【Alphabet extraction】

Excel。A~E評価で一番いい評価を抽出するのは意外と大変です。

<CHAR+MIN+CODE関数>

下記の表があります。

試験1回目から5回目まで行って、それぞれの評価に基づいたA~Eまでの文字が入力されていて、G列には、担当者ごとの評価の中で一番いい評価を抽出しているという表です。

一件目の試験評価が、E・B・D・D・A・Aなので、A評価がG列に抽出されているわけです。

簡単そうに思えますが、意外とG列の一番いい評価を抽出するのが大変なので、確認をしていくことにしましょう。

【MIN関数では対応できない】

最初に考えるとしたら、A~EなのでAとEを比べる、例えば昇順にすれば、Aが一番最初にありますから、MIN関数を使えばいいように思えます。

ではG2にMIN関数で算出してみましょう。

算出された結果は、なんと「0(ゼロ)」。想像していたように算出してくれませんでした。

なぜ、こうなってしまったのかというと、MIN関数。

この関数は、対象が数値でないといけない関数なのです。

ただ、MIN関数を使うというアイディアは悪くないのです。

問題は、数値でないとダメということ。

【CODE関数で文字を文字コードに変換する】

コンピューターの文字というのは、アスキーコードとかUTF8など文字コードを持っていているという特徴があります。

幸い文字コードは数値です。

その文字コードを使えば、A~Eまでのアルファベットであっても数値化することができます。

文字を文字コードに変換することができる関数があります。

それが『CODE関数
H2にF2の「A」の文字コードが、いくつなのか確認してみましょう。

H2の数式は、
=CODE(F2)
算出された結果は、65です。
Eは69という文字コードをもっています。

このCODE関数を使えばどうにかなりそうですね。

それでは、G2の数式を次のように設定してみましょう。

=MIN(CODE(B2:F2))
MIN関数とCODE関数をネストにしています。

CODE関数の引数は、範囲なので、B2:F2という範囲でも設定することが可能です。

しかし算出された結果をみると…

65と算出されてしまいました。

たしかに、1件目のデータは、Aが算出してほしいので、そのAの文字コードである65が算出されたところまではいいのですが、65という数値ではなく、「A」という文字を表示してほしいわけです。

原因は、CODE関数をつかったことで、文字が数値になってしまったからです。

なので、今度は、文字コードになった数値を文字に変換する「CHAR関数」を使う必要があります。

【CHAR関数で文字にもどす】

G2の数式をさらにアレンジします。

=CHAR(MIN(CODE(B2:F2)))

算出結果を確認して、オートフィルで数式をコピーしてみましょう。

これで、アルファベットの評価を算出することができました。

文字だけでコントロールできない場合は、文字コードとつかうという方法もありそうですね。