前回はExcel VBAエキスパートスタンダード1,2章の勉強方法について説明しました。
前回までの記事はこちら
今回は5章のWorksheetFunctionについてレポートしていきます。
なお今回はコードの説明のみなので絵や表はありません(汗)。
理解が間違っているところもあるかもしれませんがわからない人と同じ視点に立てるのは今しかないので細かいところはご容赦ください。
間違えに気づいたら修正していきます(笑)。
なおこの体験記は短時間で効率よく勉強することを目的として書いていますので勉強の際に参考にしてもらえれば幸いです。
<今回の目的>
WorksheetFunctionを理解する
- 5章を精読する
- WorksheetFunctionをわかりやすく説明する
- 今の立ち位置
- 結論
- WorksheetFunction
- WorksheetFunction.Sum(範囲)
- WoksheetFunction.CountIf(範囲,検索条件)
- WorksheetFunction.SumIf(セル範囲1,条件,セル範囲2)
- WorksheetFunction.Large(範囲,順番)
- WorksheetFunction.Small(範囲,順番)
- WorksheetFunction.VLookup(検索値,検索範囲,列番号,検索方法)
- WorkSheetFunction.Index(選択列,WorksheetFuncton.Match(検索値、範囲,照合の種類)
- WowksheetFunction.EOMonth(セル,nカ月後)
- ここでのまとめ
今の立ち位置
以前の記事で説明しましたが私の今の立ち位置は以下です。
概要 | 内容 | 勉強時間 | 完了の有無 (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以外はあやふやなので理解していきたいです。
コメント