Excel VBAエキスパート体験記14(WorksheetFunction)

VBAエキスパート

前回はExcel VBAエキスパートスタンダード1,2章の勉強方法について説明しました。
前回までの記事はこちら

今回は5章のWorksheetFunctionについてレポートしていきます。

なお今回はコードの説明のみなので絵や表はありません(汗)

理解が間違っているところもあるかもしれませんがわからない人と同じ視点に立てるのは今しかないので細かいところはご容赦ください。
間違えに気づいたら修正していきます(笑)。

なおこの体験記は短時間で効率よく勉強することを目的として書いていますので勉強の際に参考にしてもらえれば幸いです。

<今回の目的>

WorksheetFunctionを理解する

今回の勉強方法
  1. 5章を精読する
  2. WorksheetFunctionをわかりやすく説明する

スポンサーリンク

今の立ち位置

以前の記事で説明しましたが私の今の立ち位置は以下です。

概要内容勉強時間完了の有無
(Basic)
完了の有無
(Standard)
1 公式テキストの購入安く購入できる方法を探す1時間1時間済
2 公式テキストの把握テスト形式、単元を知る1時間15分済7分済
3 公式テキスト問題集実施1スタンダード2回、ベーシックで1回実施4時間50分済30分
4 公式テキスト勉強(×部分)間違えた単元の勉強を実施。暗記はボイスメモで3時間1時間30分
5 公式テキスト勉強(〇部分)会っていた単元の勉強を実施。暗記はボイスメモで3時間1時間
6 公式テキスト問題集実施2スタンダード 3回実施4時間
7 3~6の繰り返し3セット実施20時間
 36時間4時間5分47分

今回は第5章のWorksheetFunctionについて説明します。

結論

いきなりですが結論です。

スタンダードで学ぶWoksheetFunctionは8個

WorksheetFunction

VBAからエクセルで使用するワークシート関数を呼び出すにはWorksheetFunction.を使います。
WorksheetFunctionの後の.は大事です。

ちなみにVBAの中で?と思われるかもしれませんがExcelに備わっているワークシート関数を使えるとコードが簡単に書けるようになります。

例としてはSum関数があります。

Worksheet.Sum(Range(“A1:A5”))

VBAでコードを書く際はFor~Nextを使用して一つずつ足す必要がありますがその必要はなく1行でコードが書けます。

これは(配列をのぞいて)基本一つずつセルを処理していくVBAと、セル範囲で処理を行うワークシート関数の違いです。
一つずつ処理するのも悪くないですがWorksheetFunctionを用いて一気に処理することができます。

なおワークシート関数VBAで用いる際は、ワークシート関数=すべて大文字 WorksheetFunction=単語の先頭のみ大文字というルールがあります。

また注意点としてセルの指定においてはワークシート関数で用いていた(A1:A5)は使えずあくまでVBAでのセルの指定(Range(“A1:A5”))が必要になります。
ただプロパティのValueなどの記載は不要です。

WorksheetFunction.Sum(範囲)

セルに入力されている数値の合計に用います。

例:WorksheetFunction.Sum(Range(“A1:A6”))

WoksheetFunction.CountIf(範囲,検索条件)

特定のデータの件数をカウントする場合に用います。

なお何らかのデータが範囲内に存在するかどうかを一度に調べるのに非常に便利です。

Sub Sample()

If WorksheetFunction.CountIf(Range("A1:A6"),"りんご")=0 Then
   MsgBox "存在しません"
Else
   MsgBox "存在します"
End If

WorksheetFunction.SumIf(セル範囲1,条件,セル範囲2)

特定のデータと同じ行にある数値だけ合計するときに用います。

ここではセル範囲1内について条件を照らし合わせて、条件に合う行と同じセル範囲2について合計をします。
例:WorksheetFunction.SumIf(Range(”A1:A6”),”リンゴ”,Range(”B1:B6”))

WorksheetFunction.Large(範囲,順番)

大きい順から指定した順番の数値を調べるときに使います。

例:WorksheetFunction.Large(Range(”A1:A6”),3)

WorksheetFunction.Small(範囲,順番)

小さい順から指定した順番の数値を調べるときに使います。

例:WorksheetFunction.Small(Range(”A1:A6”),3)

WorksheetFunction.VLookup(検索値,検索範囲,列番号,検索方法)

表の左端を検索して見つかった行の指定した位置を返します。

例:WorksheetFunction.VLookUp(Range(“A1”),Range(”A1:B6”),2,0)

WorkSheetFunction.Index(選択列,WorksheetFuncton.Match(検索値、範囲,照合の種類)

表の中の文字を検索して見つかった行の指定した位置を返します。この方法だと検索列は左端でなくても問題ありません。
なおIndex関数の中にMatch関数を使う場合はMatch関数についてもWorksheetFunctionをつけなくてはなりません。
例:WorksheetFunction.Index(Range(“A1:A6”), WorksheetFunction.Match(Range(“C1”), Range(“B1:B6”), 0))

WowksheetFunction.EOMonth(セル,nカ月後)

指定した月の月末の日を調べる際に使います。End Of Monthの略の為EOMonthとなります。

当月末はnカ月後に0、先月末はー1、来月末は1を入れればよいです。

例:WorksheetFunction.EOMonth(Range(“D1”), 3)

ここでのまとめ

VBAでワークシート関数を使う際はWorksheetFunction. を使います。
なおスタンダードのテキストで紹介されている関数は8つのみの為これらを押さえておけば問題ないと思います。

なお今回の勉強時間も10分でした。ワークシート関数はVLOOK以外はあやふやなので理解していきたいです。

コメント

タイトルとURLをコピーしました