著者:
Alice Brown
作成日:
4 5月 2021
更新日:
15 5月 2024
コンテンツ
Excelには、SUM、VLOOKUP、LEFTなどの多くの、おそらく数百の組み込み関数がありますが、より複雑なタスクにExcelを使い始めると、存在しない関数が必要になることがよくあります。心配しないでください。すべてが失われるわけではありません。必要なのは、目的の関数を作成することだけです。
ステップ
- 新しいワークブックを作成するか、新しく作成したユーザー定義関数(FDU)を使用するワークブックを開きます。
-
VisualBasicエディターを開きます これは、[ツール]-> [マクロ]-> [Visual Basic Editor]に移動するか(またはAlt + F11を押す)、MicrosoftExcelに組み込まれています。 -
新しいモジュールを追加します 示されたボタンをクリックして、ワークブックに移動します。 新しいモジュールを追加せずにワークシート自体にユーザー定義関数を作成できますが、これにより、同じワークブック内の他のワークシートで使用できなくなります。 -
関数の「ヘッダー」または「プロトタイプ」を作成します。 次の構造が必要です。 パブリック関数TheNameOfYourFunction(param1 As type1、param2 As type2)As returnType 必要な数のパラメーターがあり、それらのタイプは、基本データタイプまたは範囲などのExcelオブジェクトタイプのいずれかです。パラメータは、関数が作用する「オペランド」と考えることができます。たとえば、45度の正弦を計算するためにSIN(45)と言うと、45がパラメーターとして使用されます。次に、関数コードはこの値を使用して計算を実行し、結果を表示します。 - 次のことを確認して、機能コードを追加します。 1)パラメータによって提供される値を使用します; 2)結果を関数名に割り当てます。 3)「endfunction」で関数を閉じます。VBAまたは他の言語でプログラミングする方法を学ぶには時間がかかり、詳細なチュートリアルが必要になる場合があります。ただし、関数には小さなコードブロックが含まれていることが多く、使用する言語リソースはほとんどありません。 VBA言語の最も有用な要素は次のとおりです。
- ブロック 場合、条件が満たされた場合にのみコードの一部を実行できます。例えば:
パブリック関数CourseResult(grid As Integer)As String
グレード> = 5の場合
CourseResult = "承認済み"
そうしないと
CourseResult = "拒否されました"
End If
終了機能
コードブロックの要素に注意してください 場合:IF条件THENコードELSEコードENDIF。キーワード そうしないと コードの2番目の部分はオプションです。
- ブロック の、コードの一部を実行します 一方 (ながら)または まで (まで)条件が満たされるまで。例えば:
パブリック関数IsPrime(整数としての値)ブール値として
Dim i As Integer
i = 2
IsPrime = True
の
値/ i = Int(値/ i)の場合
IsPrime = False
End If
i = i + 1
ループWhilei <value And IsPrime = True
終了機能
要素をもう一度見てください:LOOP WHILE / UNTIL条件をコーディングしてください。また、変数が「宣言」されている2行目にも注意してください。コードに変数を追加して、後で使用できるようにすることができます。変数は、コード内で一時的な値として機能します。最後に、関数宣言をBOOLEANとして見てください。これは、値TRUEとFALSEのみを許可するデータ型です。数が素数であるかどうかを判断するこの方法は理想的ではありませんが、コードを読みやすくするために、そのままにしておくことをお勧めします。
- ブロック ために、指定された回数だけコードを実行します。例えば:
パブリック関数階乗(整数としての値)As Long
薄暗い結果
Dim i As Integer
値= 0の場合次に
結果= 1
ElseIf value = 1 Then
結果= 1
そうしないと
結果= 1
i = 1の場合値に
結果=結果 * i
次
End If
階乗=結果
終了機能
要素をもう一度見てください:FOR変数=下限TO上限コードNEXT。要素にも注意してください ElseIf ステートメントに追加されました 場合、これにより、実行するコードのオプションをさらに追加できます。最後に、関数宣言と「結果」変数を次のように見てください。 長いです。データ型 長いです 「整数」よりもはるかに高い値を許可します。
以下は、数字を単語に変換する関数のコードです。
- ブロック 場合、条件が満たされた場合にのみコードの一部を実行できます。例えば:
- ブックに戻る セルの内容を次のように開始して関数を使用します。 等しい 役割の名前が続きます。 関数名に開始括弧を追加します。パラメーターは コンマ 最後の閉じ括弧。例えば:= NumberToLetters(A4) カテゴリで検索して、ユーザー定義の数式を使用することもできます ユーザー定義の ウィザードで式を入力します。ボタンをクリックするだけ FX 数式バーの左側にあります。パラメータには次の3つのタイプがあります。
- セルの数式に直接入力された定数値。この場合、文字列は引用符で囲む必要があります。
- のようなセル参照 B6 またはのような間隔 A1:C3 (パラメーターはタイプでなければなりません ブレーク"")
- 関数内に配置された他の関数(関数を他の関数内にグループ化することもできます)。つまり:=階乗(MAX(D6:D8))
- 結果に問題がないか確認してください 関数を数回使用した後、異なるパラメーター値を正しく処理することを確認してください:
チップ
- If、For、Doなどの制御構造内にコードのブロックを記述するときは常に、いくつかの空白またはタブを使用してブロックをインデントすることを忘れないでください(インデントスタイルはあなた次第です)。これにより、コードが理解しやすくなり、エラーの検出とコードの改善がはるかに簡単になります。
- Excelには多くの組み込み関数があり、ほとんどの計算はそれらを単独で、または組み合わせて使用して実行できます。独自のコードを開始する前に、使用可能な関数のリストを検索してください。組み込み関数を使用すると、実行が速くなります。
- 関数が結果を計算するためにすべてのパラメーターを必要としない場合があります。この場合、キーワードを使用できます オプション 関数ヘッダーのパラメーター名の前。あなたは使用することができます IsMissing(parameter_name) コード内で、値がパラメーターに割り当てられているかどうかを判別します。
- 関数のコードの書き方がわからない場合は、MicrosoftExcelで簡単なマクロを書く方法をお読みください。
- Excelで関数名としてまだ定義されていない名前を使用してください。そうしないと、関数の1つしか使用できなくなります。
警告
- セキュリティ対策により、マクロを無効にする場合があります。送信する本にはマクロがあり、コンピューターに損傷を与えないので信頼できることを同僚に知らせてください。
- この記事で使用されている関数は、前述の問題を解決するための最良の方法ではありません。これらは、言語制御構造の使用を説明するためにのみ使用されました。
- VBAには、他の言語と同様に、Do、If、For以外にもいくつかの制御構造があります。これらは、関数のソースコード内で何ができるかを明確にするためにここで説明されました。 VBAを学ぶことができる多くのオンラインチュートリアルが利用可能です。