【簡単Excelマクロ・VBA】WorkSheetFunctionを使ってコードをシンプルに!|ワンポイントテクニック #009



いつもありがとうございます。
ノンプログラマー向け「Excelマクロ・VBAワンポイントテクニック解説シリーズ」へようこそ。
本稿では「WorkSheetFunction」の使い方を解説いたします。
VBAは、WorksheetFunction
を利用できることが、他のプログラミング言語にはない大きな特徴です。この機能により、Excelで使用する関数をそのままVBA内で活用できます。たとえば、数値の合計や検索といった操作は、他のプログラミング言語ではコードを一から書く必要がありますが、VBAでは SUM
や VLOOKUP
といった、あらかじめExcelに備わっている関数を呼び出すことでそれらの操作を行うことが可能です。
VBAでプログラミングを行う上で、この機能を使わない手はありません。WorksheetFunction
を使いこなせば、コードのシンプルさが大きく向上します。
本稿では、WorkSheetFunctinの基本的な使い方を解説します。今回紹介するテクニックを使えば、あなたのVBAプログミングが一段と洗練されたものになるはずです。
VBAを活用して、自分やコミュニティに合ったアプリを作成し、仕事量は半分に、成果は2倍にしていきましょう!初心者の方にも分かりやすく丁寧に解説していきますので、ぜひ最後までご覧ください。
WorkSheetFunctionの基本構文

WorkSheetFunctionの基本構文は次の通りです。
WorkSheetFunction.関数名(引数)
変数に格納する場合は、次のように記述します。
Dim 変数名 As データ型
変数名 = WorksheetFunction.関数名(引数)
実務で良く使うWorkSheetFunction
実務で比較的よく使用される WorkSheetFunction をご紹介します。
Sum
範囲内の数値を合計する。
WorksheetFunction.Sum(データ範囲)
Average
範囲内の数値の平均値を求める。
WorksheetFunction.Average(データ範囲)
Count
範囲内の数値が入力されたセルの数を数える。
WorksheetFunction.Count(データ範囲)
CountIf
範囲内で条件に一致するセルの数を数える。
WorksheetFunction.CountIf(データ範囲, 条件)
Max
範囲内の最大値を求める。
WorksheetFunction.Max(データ範囲)
Min
範囲内の最小値を求める。
WorksheetFunction.Min(データ範囲)
Large
範囲内で n 番目に大きい値を求める。
WorksheetFunction.Large(データ範囲, n)
Small
範囲内で n 番目に小さい値を求める。
WorksheetFunction.Small(データ範囲, n)
VLookup
指定した値を縦方向に検索して対応する列の値を返す。
WorksheetFunction.VLookup(検索値, 範囲, 列番号, 検索の型)
検索の型
は以下の通り。
検索の型 | 指定値 | 動作 | 使用例 | 注意点 |
---|---|---|---|---|
近似一致 | TRUE または 1 |
検索値に最も近い値を返す(検索範囲が昇順に並んでいる場合に正確に動作)。 | 点数や年齢など範囲ごとに値を割り当てる場合(例: 評価ランクや税率計算など)。 | 検索範囲は昇順に並んでいる必要がある。 |
完全一致 | FALSE または 0 |
検索値が完全に一致する場合に値を返す。一致しない場合はエラー(#N/A )。 |
商品コードや社員番号など、一意の値で検索する場合。 | 検索値が見つからない場合にエラーが発生する可能性がある。 |
近似一致の例
検索範囲が昇順に並んでいる場合に、75に近い値を返す。
Dim result As Variant
result = WorksheetFunction.VLookup(75, Range("A1:B10"), 2, True)
MsgBox result
完全一致の例
完全に一致する値を返す。検索値が見つからない場合、エラーになる。
Dim result As Variant
result = WorksheetFunction.VLookup("123", Range("A1:B10"), 2, False)
MsgBox result
HLookup
指定した値を横方向に検索して対応する列の値を返す。
WorksheetFunction.HLookup(検索値, 範囲, 行番号, 検索の型)
検索の型は、VLookupと同じ。
Match
範囲内で指定した値が何番目にあるかを求める。
WorksheetFunction.Match(検索値, 範囲, 検索の型)
Index
範囲内の特定の行と列にある値を取得する。
WorksheetFunction.Index(範囲, 行番号, 列番号)
WorkSheetFunctionへのデータ範囲の渡し方
WorkSheetFunctionへの主なデータ範囲の渡し方は、次の通りです。
A1形式
WorksheetFunction.Sum(Range("A1:A10"))
Cellsプロパティ
MsgBox WorksheetFunction.Sum(Range(Cells(1, 1), Cells(10, 1)))
配列
Sub ExampleArray()
Dim data_array As Variant
data_array = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
MsgBox WorksheetFunction.Sum(data_array)
End Sub
おわりに


ご覧いただきありがとうございました。
今回の記事では、「WorkSheetFunctionの使い方」を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。
関連記事
本稿と関連の深い記事です。もしよろしければ、合わせてご活用ください。
- 【簡単Excelマクロ・VBA】Excelマクロ・VBAの全体像 | みんなの実用学 (jitsuyogaku.com)
- 【簡単Excelマクロ・VBA】通常使用編目次 | みんなの実用学 (jitsuyogaku.com)
- 【簡単Excelマクロ・VBA】ワンポイントテクニック編目次 | みんなの実用学 (jitsuyogaku.com)
- 【簡単Excelマクロ・VBA】アプリ事例編目次 | みんなの実用学 (jitsuyogaku.com)
VBAプログラミングスキルアップのための参考情報
ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。
VBAプログラミングのスキルアップ
学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。
入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。
甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/
VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。
