VBAオジサンのらくがき帳

WorksheetFunctionについて

2021-03-04 00:00:00

WorksheetFunctionオブジェクトを使うとエクセル関数をVBAで使用することができます。使える関数はたくさんありますが、代表的なメソッドについて使い方をまとめてみました。

Sum 数値の合計を返す

パラメータ

使用例

WorksheetFunction.Sum(1, 2, 3)
WorksheetFunction.Sum(Range("A1:A3").Value)

CountIf 検索条件に一致するセルの個数を返す

パラメータ

使用例

WorksheetFunction.CountIf(Range("A1:A5"), 2)
WorksheetFunction.CountIf(Range("A1:A5"), ">2")
WorksheetFunction.CountIf(Range("A1:A5"), "ABC")
WorksheetFunction.CountIf(Range("A1:A5"), "A*")

SumIf 検索条件に一致するセルの値の合計を返す

パラメータ

使用例

WorksheetFunction.SumIf(Range("A1:A5"), "A*", Range("B1:B5"))
WorksheetFunction.SumIf(Range("A1:A5"), "A*", Range("B1")) '合計対象は先頭セルの指定でもOK

Large/Small データセットの中で何番目かに大きな/小さなデータを返す

パラメータ

使用例

WorksheetFunction.Large(Array(1, 2, 3, 4), 2)
WorksheetFunction.Large(Range("A1:A5"), 2)
WorksheetFunction.Small(Range("A1:A5"), 2)

VLookup 範囲の1 列目で値を検索し、別の列の同じ行にある値を返す

パラメータ

※近似一致の場合、範囲の最初の列の値は、昇順の並べ替え順序で配置する必要がある

使用例

WorksheetFunction.VLookup("ABC", Range("A1:C5"), 3, False)

Match 値と一致する配列内の項目の位置を返す

パラメータ

使用例

WorksheetFunction.Match("BBB", Range("A1:A5"), 0)
WorksheetFunction.Match(3, Array(1, 2, 3, 4, 5, 6), 0)

Index テーブルまたは範囲内の値を返す

パラメータ

使用例

WoWorksheetFunction.Index(Range("A1:A5"), 2)
WorksheetFunction.Index(Range("A1:B2,C1:D2"), 2, 2, 2) 'D2の値を返す

EoMonth 開始日から起算して、指定された月数だけ前または後の月の最終日のシリアル値を返す

パラメータ

使用例

WorksheetFunction.EoMonth(Range("A1").Value, 0)

'1900年3月以前の日付の場合はずれる(ExcelとVBAのシリアル値のずれのため)
WorksheetFunction.EoMonth(#3/5/2021#, -1)

Subtotal 集計を作成する

パラメータ

※フィルター処理されているセルは除外される。非表示の値を無視する場合は、集計方法の番号に100をたす。

使用例

WorksheetFunction.Subtotal(1, Range("A1:A10"))
WorksheetFunction.Subtotal(103, Range("A1:A10"))