今回は実際に私が業務で使っているマクロをご紹介します。
業務として私は当日納品される商品一覧をマスタデータから抽出する作業を行っています。手作業でフィルターを操作してもよいのですが、今回紹介するマクロを使えば30分の作業が1クリックで行えるので非常に便利です。
目次
- コピペ用マクロ全文
- 概要説明
まず、やりたいことを日本語で確認します。マスタデータから本日納期の品だけを抽出し、別シートに貼り付けます。オートフィルターを使って手動で抽出する作業を自動化します。
マスタデータから
抽出先シートに張り付ける
コピペ用マクロ全文
以下が、マクロ全文になります。
Sub 本日納期品抽出()
‘マスタデータのフィルターを解除する。
If Workbooks(“発注一覧.xlsx”).Sheets(“Sheet1”).FilterMode = True Then
Workbooks(“発注一覧.xlsx”).Sheets(“Sheet1”).ShowAllData
End If
‘マスタデータを現在発注中でフィルターする
Workbooks(“発注一覧.xlsx”).Activate
With Workbooks(“発注一覧.xlsx”).Sheets(“Sheet1”)
Range(“A1″).AutoFilter field:=1, Criteria1:=”発注中”
‘さらに本日の日付でフィルターする
Range(“A1”).AutoFilter field:=5, Criteria1:= _
Workbooks(“サイト.xlsm”).Sheets(“Sheet1”).Range(“K2”).Text
‘抽出するものだけ残してコピー
Range(“A1,D1:E1,H1”).EntireColumn.Hidden = True
Range(“A1”).CurrentRegion.Offset(1, 0).Copy
End With
‘貼り付け後、元に戻す。
Workbooks(“サイト.xlsm”).Sheets(“Sheet1”).Range(“A2”).PasteSpecial
Workbooks(“発注一覧.xlsx”).Sheets(“Sheet1”).Range(“A1,D1:E1,H1”).EntireColumn.Hidden = False
Workbooks(“発注一覧.xlsx”).Sheets(“Sheet1”).ShowAllData
Workbooks(“サイト.xlsm”).Activate
End Sub
次に詳細の説明に移ります。
マスタデータのフィルターを解除するとはフィルターがかかっていた場合、それを解除するという意味です。このifを入れずにShowAllDataだけにすると、フィルターがかかっていないときエラーになってしまいます。
次にフィルターをかけていきます。まず現在、発注中でフィルター。
さらに指定納期欄が本日の日付で抽出。抽出先シートにTODAY()関数を書いてそれをもとにしています。最後のtextを付けないとうまくいきません。これについては別記事で。
ここが今回のミソになるのですが、フィルター結果をコピーする際、その範囲をどのように指定するかということです。
これについては以下のサイトを参考にしています。
Office TANAKA – Excel VBA Tips[オートフィルタ[結果をコピーする]]
そして貼り付け後、もとに戻して終わりになります。
いかがでしたでしょうか。この通りやれば本日納期のものだけ瞬時に取り出せます。是非参考にしてみてください。
コメント