カスタム関数(ユーザー定義関数)

関数を定義する

Excelに存在しない関数をVBAで作る(定義する)ことができる。

【書き方】
 Function 関数名(引数名) As Variant
	処理
	関数名=関数の答
 End Function
ここではヘロン(Ηρων)の公式で三角形の面積を計算する関数を作ってみよう。 三角形の3辺の長さから、次の式で三角形の面積を計算できる。

ヘロンの公式


そこで、3辺の長さa,b,cを引数とする関数Hron(a,b,c)を定義しよう。
Module1のウィンドウに次の文を入力する:
Function Hron(a, b, c) t = (a + b + c) / 2 Hron = Sqr(t * (t - a) * (t - b) * (t - c)) End Function

マクロのプログラムと同様に、Module1のウィンドウに書けばよい。

関数の定義


Excelのウィンドウでどこかのセルに「=Hron(3,4,5)」という数式を入力すると、3辺の長さが3,4,5の三角形の面積「6」が得られる。

関数を使う

このように、マクロのプログラムと同様の方法でカスタム関数を作ることができる。

繰り返し処理を含むカスタム関数

カスタム関数には、繰り返し処理や条件分岐なども含むことができる。
繰り返し処理を含むカスタム関数の例として、 ライプニッツ(Leibniz)級数の第n項までの和を求める関数を作ってみよう (前回の例G参照)。
Function Leibniz(n) Pi = 4 For i = 1 To n Pi = Pi + 4 * (-1) ^ i / (2 * i + 1) Next i Leibniz=Pi End Function
セルB1〜B3に、それぞれ「=Leibniz(10)」「=Leibniz(100)」「=Leibniz(1000)」と入力してみよう。ライプニッツ級数の第10項、第100項、第1000項までの和が得られる。

関数を使う



条件分岐を含むカスタム関数

次に、条件分岐を含むカスタム関数の例として、 試験の点数を引数とし、60点以上なら「合格」、それ以外なら「不合格」と返すカスタム関数を作ってみよう。
Function PassOrFail(score) If score >= 60 Then PassOrFail = "合格" Else PassOrFail = "不合格" End If End Function
セルC1に点数を入力し、セルC2に「=PassOrFail(C1)」という数式を入力すると、点数に応じて「合格」または「不合格」と表示される。

関数を使う 関数を使う



上のプログラムは、次のように書くこともできる。
Function PassOrFail(score) PassOrFail = "不合格" If score >= 60 Then PassOrFail = "合格" End If End Function
この場合、関数の答は初め一律に「不合格」と設定されるが、scoreが60以上の場合だけ「合格」で上書きされる。

以上