この記事では、EXCELのセルの値をいろいろな条件で判別して、表示させる値を変化させる方法について説明します。
2、3個の条件分岐ならIF関数で書けますが、それ以上の条件分岐の場合、IF関数の中にIF関数をたくさん書く必要があり、書くのも読むのも大変になります。
そういった多くの条件分岐を、簡単に書ける「自作関数」について説明します。
ぜひこの記事を読んで、「自作関数」を使えるようになりましょう。
困っている女性
解決する男性
解決する男性
困っている女性
解決する男性
困っている女性
もくじ
【問題】国語のテスト結果(点数)を点数評価表に基づいて評価する
5人の国語のテスト結果(点数)を以下の条件で評価を表示しましょう。
- 90点以上なら、A
- 80点以上なら、B
- 70点以上なら、C
- 60点以上なら、D
- 60点未満なら、E
以下の記事でIF関数の基礎的な部分を説明しています。
もし、IF関数を理解したい場合、以下の記事を見てください。
「セルの値で表示させる文字を変えたい」を解決する【IF関数】
【解答】国語のテスト結果(点数)を点数評価表に基づいて評価する
「IF関数で表現する方法」と「自作関数で表現する方法」を説明します。
IF関数で表現する方法
IF関数を使って表現する場合、IF関数の入れ子で記入する必要があります。
山田くんの点数81の評価を表現する場合、以下のようにIF関数を4つ使って表現します。
正直、じっくり見ないと意味がわかりません。
また、これを修正しようとすると大変です。
自作関数で表現する方法
IF関数を使って表現するより、自作関数で表示した方がわかりやすい書き方で表現できます。
自作関数とは、EXCELで標準機能で使える関数とは異なり、自分自身で好きなように作った関数のことです。
自分自身で好きに作れる関数なので、いくつ値を渡すのか、どんな条件で判断させるか、どんな結果を返すかなどを自分自身で決めれます。
山田くんの点数81の評価を表現する場合、以下のように自作関数を使って表現します。
上記は、自作関数「GetHyouka」を作りました。
山田くんの点数(C3)を自作関数に渡すと、評価(B)が返ってきます。
IF関数と比べると、シンプルな書き方で表現できます。
それでは、自作関数の作り方について説明します。
自作関数の作り方
おそらく、EXCELに開発タブが表示されていないと思います。
開発タブの中に、「Visual Basic」というボタンがあります。
「Visual Basic」を起動して、自作関数を作成する必要があります。
まず、開発タブを表示させるところから説明します。
開発タブを表示する方法
「ホーム」タブや「挿入」タブなど、どのタブでいいので何もないところを右クリックしてメニューを表示します。
表示されたメニューの「リボンのユーザー設定」をクリックします。
「Excelのオプション」ダイアログが表示されますので、「開発」にチェックをつけ、「OK」ボタンをクリックします。
「開発」タブが表示されましたか?
Visual Basicを起動して自作関数を作成する方法
開発タブの「Visual Basic」というボタンをクリックして、Visual Basicを起動します。
「Microsoft Excel Objects」を右クリックしてメニューを表示します。
表示されたメニューの「挿入」をクリックし、「標準モジュール」をクリックします。
「標準モジュール」を追加すると、上記のような画面になります。
右側の余白に自作関数を書いていきます。
点数から判断して評価(A、B、C、D、E)を返す自作関数は、上記のように書きます。
以下からソースをコピーして、Visual Basicに貼り付けてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Public Function GetHyouka(ByRef tensu As Integer) As String If tensu >= 90 Then GetHyouka = "A" ElseIf tensu >= 80 Then GetHyouka = "B" ElseIf tensu >= 70 Then GetHyouka = "C" ElseIf tensu >= 60 Then GetHyouka = "D" Else GetHyouka = "E" End If End Function |
上記のソースを説明すると、「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は「ブック(*.xlsx)」ですが、自作関数は「マクロ有効ブック(*.xlsm)」で保存しないといけません。ご注意ください。
以上です。