「じゃあ、先ほどの操作を一発でコードに記述する方法を紹介するぞ。」

開発のリボン の左側にある

マクロの記録 の開始 をクリック

先ほどの、フィルターオプションの操作を行う

マクロの記録 終了  をクリック

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

と複数の行に分けて表示するとわかりやすくなります。


「こんなの覚えられるか」

「そうだ、だから マクロの記録 の機能を使って

 エクセルにコードをつくらせるのさ。」

(そんな機能があるんだ。これまた便利だ。)

皆さんも適当なデータを準備して、別途、抽出するためのシートを準備

マクロの記録で コードを作成

抽出の条件を変えて、ボタンをクリックすると

条件で指定したデータが抽出されることを確認してください。

「山田、でも毎回、取引先の名前を変えてクリックしろって事か?

 それもめんどくさいじゃないか。」

「分かっているよ、これからもっと自動化するから話を聞け!!」