「じゃあ、先ほどの操作を一発でコードに記述する方法を紹介するぞ。」
開発のリボン の左側にある
マクロの記録 の開始 をクリック
先ほどの、フィルターオプションの操作を行う
マクロの記録 終了 をクリック
VBエディターを起動すると、新しい Module が作成されていますので
開くと
Sub Mackro1()
'
' macro1 Macro
'
'
Sheets("明細データ").Columns("A:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("D10:E11"), CopyToRange:=Range("A12:E12"), Unique:=False
End Sub
みたいになっているはず。
macro1 がマクロ名
Sub macro1() ~ End Sub の間が、そのマクロです。
緑の部分( ’で始まる)は、コメントアウトと呼び、プログラムには関係部分です。
実際のVBAのコードは
Sheets("売上データ").Columns("A:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("D10:E11"), CopyToRange:=Range("A12:E12"), Unique:=False
の一行だけです。
Sheets("明細データ").Columns("A:E")の範囲を
.AdvancedFilter フィルターオプションの機能で
Action:=xlFilterCopy, 別にコピー(指定し範囲にチェックの事)
CriteriaRange:=Range("D10:E11"), 検索条件の範囲は D10:E11
CopyToRange:=Range("A12:E12"), コピー先(抽出範囲)は、12行目に書いてある
Unique:=False 重複するレコードを無視する にはチェックなし
xlFilterCopy, _ の最後 _(アンダーバー)は、長いコードを改行する時に使用します。
Sheets("売上データ").Columns("A:E").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("D10:E11"), _
CopyToRange:=Range("A12:E12"), Unique:=False
と複数の行に分けて表示するとわかりやすくなります。
「こんなの覚えられるか」
「そうだ、だから マクロの記録 の機能を使って
エクセルにコードをつくらせるのさ。」
(そんな機能があるんだ。これまた便利だ。)
皆さんも適当なデータを準備して、別途、抽出するためのシートを準備
マクロの記録で コードを作成
抽出の条件を変えて、ボタンをクリックすると
条件で指定したデータが抽出されることを確認してください。
「山田、でも毎回、取引先の名前を変えてクリックしろって事か?
それもめんどくさいじゃないか。」
「分かっているよ、これからもっと自動化するから話を聞け!!」