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

アフィリエイト広告を利用しています。
QRコード
【QRコード】PC<-->スマホの切り替えにご利用ください
アイキャッチ画像
運営者・ポテ

いつもありがとうございます。

ノンプログラマー向け「Excelマクロ・VBAワンポイントテクニック解説シリーズ」へようこそ。

本稿では「WorkSheetFunction」の使い方を解説いたします。

Information
  • ノンプログラマー
    プログラミングを専門にしていない人たちのことです。
  • VBAとマクロの違い
    VBAは、Visusal Basic for Application の略で、プログラミング言語のことです。マクロは、VBAを使って作成される「機能」のことです。

VBAは、WorksheetFunction を利用できることが、他のプログラミング言語にはない大きな特徴です。この機能により、Excelで使用する関数をそのままVBA内で活用できます。たとえば、数値の合計や検索といった操作は、他のプログラミング言語ではコードを一から書く必要がありますが、VBAでは SUMVLOOKUP といった、あらかじめ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の使い方」を解説いたしました。

お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。

皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。

なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。


関連記事

本稿と関連の深い記事です。もしよろしければ、合わせてご活用ください。

VBAプログラミングスキルアップのための参考情報

ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。

VBAプログラミングのスキルアップ

学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。



入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。

甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

\チェックしてみよう/

\チェックしてみよう/

\チェックしてみよう/


VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。



プログラミングの一般教養

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。


こちらの記事でも紹介しております。もしよろしければご覧ください。

QRコード
【QRコード】PC<-->スマホの切り替えにご利用ください

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です