今回はエクセルの自作関数の作成方法を説明していきます。
エクセルの自作関数の作り方は非常に簡単です。
エクセル関数にRAND関数がありますが、0~1の間のランダムな数値が表示されます。
その数字を丸めたり、10をかけたりして、整数を取り出したりしないとだめなんですね。
例)1~10のランダムな整数を表示する関数
=ROUND(RAND()*10,0)
これを自作関数を作成すると、
=RANDINT()
これだけで作成することができます。
この例は自作関数作成する必要ある?って思いますが、VLOOKUP関数とかIF関数、IFERROR関数、SUM関数等を使いまわして、どうなってるの?みたいな関数を見るのが嫌な方に向けて書いていきます。
自作関数ってなに?
自作関数とは冒頭で説明した内容とかぶってしまいますが、EXCELに標準であるSUM関数みたいなものを自作した関数のことです。
求めている結果を表示するプログラムを作成するのは、大変かもしれませんが、関数が見やすくなったり、メンテナンス性がアップします。
(冒頭の説明文でいうと発生させるランダム要素を1~100、1~1000等に一瞬で変更することができます。)
自作関数の基本
自作関数の作り方は以下の通りです。
また、自作関数は標準モジュールに記述していきます。
Function 自作関数(Target As Range)
'以下に自作関数を記述します。
'自作関数の返り値を設定します。
自作関数 = "自作関数を作成しました。"
End Function
Function 自作関数(Target As Range)について
普段マクロを作成する方はSubプロシージャでマクロを作成していますが、自作関数はFunctionプロシージャ使用します。
記述要領は一緒ですが、返り値があるのが特徴です。
また、Functionプロシージャはマクロの中でも呼び出すことができます。
引数について
引数については任意で設定できます。
必要なければTarget as Rangeの部分を消してもらえれば使用できます。
引数の部分については数値、文字列、オブジェクト等なんでも何個でも受け取ることができます。
返り値の設定方法について
返り値の設定方法については
Functionプロシージャ名 = 返り値
で設定することができます。
今回の説明用のプログラムでいうと、自作関数というFunctionプロシージャは「自作関数を作成しました。」と表示するプログラムです。
使い道なさすぎぃぃぃぃぃ笑
自作関数の使用方法
自作関数はセルの中に関数名を記述するだけで使用できます。
=自作関数(A1)
今回の説明用プログラムは引数が必要になるので、A1と入力しています。引数をなくしてしまえば()だけの記述で使用できます。
今回作成した自作関数(超簡単)
今回作成したのは冒頭で説明した通り、ランダムな整数を生成する関数です。
使いどころはないかもしれませんが、自作関数の基本を押さえていますので、参考になれば幸いです。
Function RANDINT(Optional digit As Integer = 1)
'digitは桁数を取得します。
'桁数が0だった場合は0を返します。
If digit = 0 Then
RANDINT = 0
'桁数分繰り返し乱数を10倍します。
Else
RANDINT = Math.Rnd
For i = 1 To digit
RANDINT = RANDINT * 10
Next i
End If
'RANDINTを丸めて返します。
RANDINT = Round(RANDINT, 0)
End Function
ぜひコードをコピーして使用してみてください。
コメント