【EXCEL:VBA】「セルの値で表示させる文字を変えたい」を解決する

セルから自作関数を利用する

この記事では、EXCELのセルの値をいろいろな条件で判別して、表示させる値を変化させる方法について説明します。

 

2、3個の条件分岐ならIF関数で書けますが、それ以上の条件分岐の場合、IF関数の中にIF関数をたくさん書く必要があり、書くのも読むのも大変になります。

 

そういった多くの条件分岐を、簡単に書ける「自作関数」について説明します。

 

ぜひこの記事を読んで、「自作関数」を使えるようになりましょう。

 

困っている女性

IF関数を使えば、条件で表示させる値を変えることができるけど、条件が複雑になるとIF関数が複雑になってよくわからなくなるわ・・・。
IF関数は便利だけど、2・3個の条件が限界だね。

解決する男性

それ以上の条件の場合は、自作関数を使うと簡単に書けるよ!!

解決する男性

困っている女性

本当?私でも書ける?
簡単だよ。いますぐ書けるよ!!

解決する男性

困っている女性

それじゃあ、早く教えてよ。

 

【問題】国語のテスト結果(点数)を点数評価表に基づいて評価する

5人の国語のテスト結果(点数)を以下の条件で評価を表示しましょう。

  • 90点以上なら、A
  • 80点以上なら、B
  • 70点以上なら、C
  • 60点以上なら、D
  • 60点未満なら、E
国語のテスト結果の問題

国語のテスト結果の問題

以下の記事でIF関数の基礎的な部分を説明しています。
もし、IF関数を理解したい場合、以下の記事を見てください。

「セルの値で表示させる文字を変えたい」を解決する【IF関数】

【解答】国語のテスト結果(点数)を点数評価表に基づいて評価する

「IF関数で表現する方法」と「自作関数で表現する方法」を説明します。

IF関数で表現する方法

IF関数を使って表現する場合、IF関数の入れ子で記入する必要があります。

IF関数の入れ子で表現

IF関数の入れ子で表現

山田くんの点数81の評価を表現する場合、以下のようにIF関数を4つ使って表現します。

タイトル
=IF(C3>=90,$G$3,IF(C3>=80,$G$4,IF(C3>=70,$G$5,IF(C3>=60,$G$6,$G$7))))

正直、じっくり見ないと意味がわかりません。
また、これを修正しようとすると大変です。

自作関数で表現する方法

IF関数を使って表現するより、自作関数で表示した方がわかりやすい書き方で表現できます。

自作関数とは、EXCELで標準機能で使える関数とは異なり、自分自身で好きなように作った関数のことです。

自分自身で好きに作れる関数なので、いくつ値を渡すのか、どんな条件で判断させるか、どんな結果を返すかなどを自分自身で決めれます。

 

山田くんの点数81の評価を表現する場合、以下のように自作関数を使って表現します。

セルから自作関数を利用する

セルから自作関数を利用する

上記は、自作関数「GetHyouka」を作りました。
山田くんの点数(C3)を自作関数に渡すと、評価(B)が返ってきます。

IF関数と比べると、シンプルな書き方で表現できます。

それでは、自作関数の作り方について説明します。

自作関数の作り方

おそらく、EXCELに開発タブが表示されていないと思います。

開発タブの中に、「Visual Basic」というボタンがあります。

「Visual Basic」を起動して、自作関数を作成する必要があります。

まず、開発タブを表示させるところから説明します。

開発タブのVisual Basicを押す

開発タブのVisual Basicを押す

開発タブを表示する方法

「ホーム」タブや「挿入」タブなど、どのタブでいいので何もないところを右クリックしてメニューを表示します。

タブの空いているところを右クリック

タブの空いているところを右クリック

表示されたメニューの「リボンのユーザー設定」をクリックします。

Excelのオプションダイアログを表示

Excelのオプションダイアログを表示

「Excelのオプション」ダイアログが表示されますので、「開発」にチェックをつけ、「OK」ボタンをクリックします。

「開発」タブが表示されましたか?

Visual Basicを起動して自作関数を作成する方法

開発タブの「Visual Basic」というボタンをクリックして、Visual Basicを起動します。

標準モジュールを追加する

標準モジュールを追加する

「Microsoft Excel Objects」を右クリックしてメニューを表示します。

表示されたメニューの「挿入」をクリックし、「標準モジュール」をクリックします。

標準モジュールを表示する

標準モジュールを表示する

「標準モジュール」を追加すると、上記のような画面になります。

右側の余白に自作関数を書いていきます。

自作関数のソース

自作関数のソース

点数から判断して評価(A、B、C、D、E)を返す自作関数は、上記のように書きます。

以下からソースをコピーして、Visual Basicに貼り付けてみましょう。

上記のソースを説明すると、「GetHyouka」が自作関数の名前です。

Sum関数のSumみたいな感じで、関数の名前になります。

「tensu」は、自作関数に渡された値を格納する変数になります。

その「tensu」が90以上なら、Aという文字を関数にセットして呼び出し元に返します。

また、「tensu」が90以上ではなく80以上なら、Bという文字を関数にセットして呼び出し元に返します。

というような感じで、「tensu」によって返す文字を変えるようになっています。

 

それでは、Visual Basicにソースを書くか、貼り付けることができましたら、保存ボタンを押して自作関数を保存しましょう。

自作関数の使い方

さきほど作成した自作関数「GetHyouka」の呼び出し方は、評価を表示させたセル(D3)を選択し、「数式」タブの「関数の挿入」をクリックします。

自作関数の呼び出し方

自作関数の呼び出し方

「関数の挿入」ダイアログの「関数の分類」で、「ユーザー定義」を選択します。

関数の挿入ダイアログ

関数の挿入ダイアログ

関数名の一覧から「GetHyouka」を選択し、「OK」ボタンをクリックします。

自作関数を選択する

自作関数を選択する

「関数の引数」ダイアログが表示されますので、セルC3を入力し、「OK」ボタンをクリックします。

関数の引数ダイアログ

関数の引数ダイアログ

セルD3に山田くんの評価が表示されるようになりました。

セルから自作関数を利用する

セルから自作関数を利用する

井上くんの評価は自作関数「GetHyouka」にセルD7を渡します。

自作関数を他のセルでも呼び出す

自作関数を他のセルでも呼び出す

それでは、山田くんの点数に数値以外の値を入力した場合、どんな評価が戻ってくるか確認してみましょう。

セルC3に「なし」と入力してみましょう。

自作関数に文字列を渡してみる

自作関数に文字列を渡してみる

山田くんの評価欄(セルD3)に、#####が表示されました。

エラーメッセージを確認する

エラーメッセージを確認する

セルD3の右上の緑にカーソルを当ててみましょう。
「#VALUE!」と表示されました。
この意味は、エラーを表しています。

自作関数では、数値が渡される前提で作成していますので、「なし」という文字列が渡されてエラーが返ってきています。

 

つづいて、山田くんの点数(セルC3)を空にすると、どうなると思いますか?

自作関数に空を渡す

自作関数に空を渡す

「E」という評価が自作関数から戻ってきました。

エラーが返ってくると思いませんでしたか?

なぜ、エラーではなく「E」が返ってきたのか確認してみましょう。

エラーにならなかった理由

エラーにならなかった理由

「tensu」に数値の0が入ってきています。

それは、空のセルを渡すと、EXCELが0に自動的に変換してくれているからです。

点数が数値0なので、60未満となり、評価Eと判断されます。

 

ファイルの保存は「xlsm」でする

最後に、自作関数を作成したEXCELファイルを保存するときは、拡張子を「xlsm」を選ぶ必要があります。

EXCELファイルの保存

EXCELファイルの保存

通常のEXCELは「ブック(*.xlsx)」ですが、自作関数は「マクロ有効ブック(*.xlsm)」で保存しないといけません。ご注意ください。

 

以上です。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です