WorksheetFunctionについて
2021-03-04 00:00:00
WorksheetFunctionオブジェクトを使うとエクセル関数をVBAで使用することができます。使える関数はたくさんありますが、代表的なメソッドについて使い方をまとめてみました。
Sum 数値の合計を返す
パラメータ
- Arg1~Arg30 – 数値 1~30 個の引数を指定できる
使用例
WorksheetFunction.Sum(1, 2, 3) WorksheetFunction.Sum(Range("A1:A3").Value)
CountIf 検索条件に一致するセルの個数を返す
パラメータ
- Arg1 – セル範囲(Range)
- Arg2 – 検索条件
使用例
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 検索条件に一致するセルの値の合計を返す
パラメータ
- Arg1 – セル範囲(Range)
- Arg2 – 検索条件
- Arg3 – 合計対象のセル(省略した場合は検索セルが使われる)
使用例
WorksheetFunction.SumIf(Range("A1:A5"), "A*", Range("B1:B5")) WorksheetFunction.SumIf(Range("A1:A5"), "A*", Range("B1")) '合計対象は先頭セルの指定でもOK
Large/Small データセットの中で何番目かに大きな/小さなデータを返す
パラメータ
- Arg1 – 配列またはセル範囲
- Arg2 – 順位
使用例
WorksheetFunction.Large(Array(1, 2, 3, 4), 2) WorksheetFunction.Large(Range("A1:A5"), 2) WorksheetFunction.Small(Range("A1:A5"), 2)
VLookup 範囲の1 列目で値を検索し、別の列の同じ行にある値を返す
パラメータ
- Arg1 – 検索値
- Arg2 – セル範囲
- Arg3 – 列番号
- Arg4 – 完全一致(False)/近似一致(Trueもしくは省略)
※近似一致の場合、範囲の最初の列の値は、昇順の並べ替え順序で配置する必要がある
使用例
WorksheetFunction.VLookup("ABC", Range("A1:C5"), 3, False)
Match 値と一致する配列内の項目の位置を返す
パラメータ
- Arg1 – 検査値
- Arg2 – 連続した範囲(同一行か同一列上)のセル、配列
- Arg3 – 照合の型: -1(以下)/0(完全一致)/1(以上)
使用例
WorksheetFunction.Match("BBB", Range("A1:A5"), 0) WorksheetFunction.Match(3, Array(1, 2, 3, 4, 5, 6), 0)
Index テーブルまたは範囲内の値を返す
パラメータ
- Arg1 – セル範囲または配列
- Arg2 – 行番号
- Arg3 – 列番号
- Arg4 – 領域番号(省略可能)
使用例
WoWorksheetFunction.Index(Range("A1:A5"), 2) WorksheetFunction.Index(Range("A1:B2,C1:D2"), 2, 2, 2) 'D2の値を返す
EoMonth 開始日から起算して、指定された月数だけ前または後の月の最終日のシリアル値を返す
パラメータ
- Arg1 – 開始日
- Arg2 – 月数
使用例
WorksheetFunction.EoMonth(Range("A1").Value, 0) '1900年3月以前の日付の場合はずれる(ExcelとVBAのシリアル値のずれのため) WorksheetFunction.EoMonth(#3/5/2021#, -1)
Subtotal 集計を作成する
パラメータ
- Arg1 – 集計方法(1:AVERAGE, 2:COUNT, 3:COUNTA, 4:MAX, 5:MIN, 6:PRODUCT, 7:STDEV, 8:STDEVP, 9:SUM, 10:VAR, 11:VARP)
- Arg2 – 集計する範囲
- Arg3‐~Arg30 – 集計する範囲(省略可能)
※フィルター処理されているセルは除外される。非表示の値を無視する場合は、集計方法の番号に100をたす。
使用例
WorksheetFunction.Subtotal(1, Range("A1:A10")) WorksheetFunction.Subtotal(103, Range("A1:A10"))