目次
UDFの作成方法はすでにご存知だと思いますが、ユーザー定義関数の使用方法と保存方法についてもう少し掘り下げて説明します。
さらに、作成した関数をExcelのアドインファイルに保存して、後から数クリックで簡単に使えるようにする方法をご紹介します。
では、ここからが本題です。
ExcelでUDFを使用するさまざまな方法
ワークシートでUDFを使用する
UDFが正しく動作することを確認したら、Excelの数式やVBAのコードで使用することができます。
カスタム関数は、通常の関数と同じようにExcelのワークブックに適用することができます。 たとえば、次のような数式をセルに書き込むだけです。
= GetMaxBetween(A1:A6,10,50)
UDFは通常の関数と組み合わせて使用することができます。 例えば、計算された最大値にテキストを追加することができます。
= CONCATENATE("10と50の間の最大値は", GetMaxBetween(A1: A6,10,50))
結果は以下のスクリーンショットでご確認いただけます。
最大値であり、かつ10〜50の範囲にある数字を見つけることができます。
もう一つの計算式を確認してみましょう。
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), となります。
カスタム関数 GetMaxBetween は、B2:B9の範囲をチェックして、10から50の間の最大値を見つけ、INDEX + MATCHで、この最大値に一致する製品名を取得します。
このように、カスタム関数の使い方は、通常のExcel関数とあまり変わりません。
このとき、ユーザー定義関数は値を返すだけで、それ以外の動作はできないことを覚えておいてください。 ユーザー定義関数の制限について詳しくはこちら。
VBAのプロシージャや関数でUDFを使用する
UDFは、VBAのマクロでも使用することができます。 下記は、アクティブなセルを含む列で10から50の範囲の最大値を検索するマクロのコードを示しています。
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End Subマクロコードには、カスタム関数
GetMaxBetween(.Cells, 10, 50)
このマクロは、アクティブな列の中で最大値を見つけ、その値がハイライトされます。 このマクロの結果は、以下のスクリーンショットで見ることができます。
カスタム関数は、別のカスタム関数の内部で使用することもできます。 このブログの前のほうで、数字をテキストに変換する問題について、カスタム関数 呪文番号 .
その助けを借りて、範囲から最大値を求め、すぐにテキストとして書き出すことができるのです。
そのために、新しいカスタム関数を作成し、その中で、関数 GetMaxBetween と 呪文番号 という、すでに私たちに馴染み深いものです。
Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End Functionご覧のように GetMaxBetween 関数が他のカスタム関数の引数である場合。 呪文番号 この数値はテキストに変換されます。
上のスクリーンショットでは SpellGetMaxBetween 関数は,100から500の間の最大数を求め,それをテキストに変換する。
他のワークブックからUDFを呼び出す
UDFをワークブックに作成した場合、残念ながら、全く問題に直面しないわけではありません。
私の経験では、ほとんどのユーザーが遅かれ早かれ、個々のプロセスや計算を自動化するためのマクロやカスタム関数の個人コレクションを作成します。 そしてここで問題が発生します。Visual Basicでユーザー定義関数のコードは、後で仕事で使えるようにどこかに保存する必要があるのです。
カスタム関数を適用するには、関数を保存したワークブックがExcelで開いている必要があります。 開いていない場合、関数を使用しようとすると「#NAME! このエラーは、数式で使用する関数の名前がExcelに分からないことを示しています。
それでは、作成したカスタム関数の使用方法について説明します。
方法1.関数にワークブック名を追加する
関数名の前に、その関数があるワークブックの名前を指定することができます。 例えば、カスタム関数を保存した場合 GetMaxBetween() という名前のワークブックで My_Functions.xlsm と入力すると、次のような数式が表示されます。
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
方法2.すべてのUDFを1つの共通ファイルに格納する
すべてのカスタム関数を1つの特別なワークブックに保存する(例. My_Functions.xlsm ) を開き、必要であれば、そこから目的の関数を現在のワークブックにコピーします。
新しいカスタム関数を作成するたびに、その関数を使用するワークブックにそのコードを複製する必要があります。 この方法では、いくつかの不都合が生じる可能性があります。
- もし、作業ファイルがたくさんあり、その関数がいたるところで必要とされる場合、コードを各ブックにコピーする必要があります。
- マクロが使える形式(.xlsmまたは.xlsb)でワークブックを保存することを忘れないようにしてください。
- このようなファイルを開くと、マクロに対する保護が毎回警告を表示し、確認する必要があります。 マクロを有効にするよう求める黄色いバーの警告を見ると、多くのユーザーは怖くなります。 このメッセージを見ないようにするには、Excelの保護を完全に無効にする必要があります。 しかし、これは常に正しく安全であるとは限りません。
ファイルを開いてユーザー定義関数のコードをコピーしたり、ファイル名を数式で書いたりすることは、最良の解決策とは言えないということに、皆さんは同意していただけると思います。
方法3.Excelアドインファイルの作成
よく使うカスタム関数をExcelのアドインファイルに保存しておくのが一番いいと思います。 アドインを使うメリット。
- アドインは一度だけExcelに接続する必要があり、その後はこのコンピュータ上のどのファイルでもその手続きや関数を使用することができます。 .xlsmや.xlsb形式のワークブックにはソースコードは保存されず、アドインファイルが保存されるので、ワークブックの保存は必要ではありません。
- アドインは常に信頼できるソースを参照するため、マクロの保護に悩まされることはもうありません。
- アドインは独立したファイルなので、コンピュータからコンピュータへ転送したり、同僚と共有したりすることが簡単にできます。
アドインの作成と使用方法については、後ほど詳しく説明します。
アドインを使用してカスタム関数を格納する
独自のアドインを作成するにはどうすればよいのでしょうか。 順を追って説明していきましょう。
ステップ1.アドインファイルの作成
Microsoft Excelを開き、新しいワークブックを作成し、任意の適切な名前(例えば、My_Functions)でアドイン形式で保存します。 これを行うには、メニューから ファイル-名前を付けて保存 必ずファイルタイプを指定してください。 エクセルアドイン :
アドインの拡張子は.xlamになります。
ヒント:Excelの初期設定では、アドインは C:\Users[Your_Name]︓AppData︓Roaming︓Microsoft︓AddIns フォルダに保存することをお勧めします。 必要であれば、他のフォルダを指定することもできますが、その場合、アドインを接続するときに、新しい場所を手動で見つけて指定する必要があります。 デフォルトフォルダに保存すると、コンピュータ上でアドオンを探す必要がありません。 Excelが自動的にリストアップします。
ステップ2.アドインファイルの接続
作成したアドインをExcelに接続し、プログラム起動時に自動的に読み込まれるようにします。 そのためには、メニューの ファイル - オプション - アドイン を確認する エクセルアドイン が選択されています。 管理する フィールドをクリックします。 行く ボタンをクリックします。 表示されたウィンドウで、アドインMy_Functionsをマークします。 リストに表示されていない場合は、[OK]をクリックします。 ブラウズ ボタンをクリックし、アドインファイルの場所を参照します。
アドインを使用してカスタム関数を保存する場合、1つの簡単なルールがあります。 ワークブックを他の人に転送する場合、必要な機能を含むアドインのコピーも必ず転送してください。 今と同じ方法で接続するはずです。
ステップ3.アドインにカスタム関数やマクロを追加する
このアドインはExcelに接続されていますが、まだ何の機能も持っていません。 新しいUDFを追加するには、Alt + F11でVisual Basic Editorを開きます。 その後、チュートリアルのCreate UDFsで説明したように、VBAコードで新しいモジュールを追加することができます。
アドインファイルの選択( My_Finctions.xlam を使用することで、VBAProjectウィンドウを表示することができます。 インサート - モジュール メニューからカスタムモジュールを追加することができます。 その中にカスタム関数を書き込む必要があります。
ユーザー定義関数のコードは、手動で入力するか、どこかからコピーしてくるか、どちらかです。
以上で、アドインが作成され、Excelに追加され、その中のUDFが使えるようになりました。 もっと多くのUDFを使いたい場合は、VBAエディタでアドインモジュールにコードを書き込んで保存すればOKです。
以上、ユーザー定義関数をワークブックで使用する方法について説明しました。 このガイドラインがお役に立てれば幸いです。 何か質問があれば、この記事へのコメント欄にご記入ください。