マクロ利用してオートフィルタ使用する。Part2 98

得意先名を指定して売上データを抽出する。


マクロ記録手順

1.マクロの記録を開始する。
2.マクロ名を入力する。「売上抽出」
3.「売上伝票」シートの見出しをクリックする。(明示的に「売上伝票」シートのタブを選択して下さい。)
4.表内のセル「A3」をクリックする。
5.メニューバー「データ」「フィルタ」「オートフィルタ」を選択する。
6.「得意先名」列の▼ボタンをクリックして得意先リストを表示し、「サンショップ」を選択します。

7.キーバードから「Ctrl]+「*」を押しリスト全体を選択します。ノートブックの場合は、「Ctrl]+「Shift」+「*」となります。
※リスト・・・Excelでは見出し列に設定された項目に従い、行単位でデータが並ぶ形式を「リスト」と呼びます。

8.ツールバーの「コピー」ボタンを押します。
9メニューバーから「挿入」「ワークシート」をクリックします。
10.ツールバー「貼り付け」ボタン横の「形式を選択して貼り付け」を選択します。
11.表れた画面で、「列幅」にチェックを入れ「OK」をクリックします。
12.「貼り付」ボタンをクリックします。
13.セル「A1」をクリックして選択状態を解除します。

14.「売上伝票」見出しをクリックします。
15.メニューバー「データ」「フィルタ」「オートフィルタ」
16.セル「A1」をクリックして、範囲選択状態を解除します。
17.「記録終了」ボタンをクリックします。
18.最後に記録されたマクロをセルの値を参照して、条件が指定できるように手直しします。








1
2
3
4


5

7
8

9


10

11


12

13

14






15
16
17
Sub 売上抽出()
'
' 売上抽出 Macro
' マクロ記録日 : 2003/11/10 ユーザー名 : yip
'

'
Sheets("売上伝票").Select
Range("A3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="サンショップ"


Selection.CurrentRegion.Select

Selection.Copy
Sheets.Add

Selection.PasteSpecial Paste:=xlPasteColumnWidths,


Operation:=xlNone,SkipBlanks:=False,Transpose:=False

ActiveSheet.Paste



Range("A1").Select

Sheets("売上伝票").Select

Application.CutCopyMode = False






Selection.AutoFilter
Range("A1").Select
End Sub







売上伝票シートを選択する。
セル「A3」を選択する。
リストにオートフィルターを設定する。
リストから左から3番目をオートフィルタの抽出対象とし、条件は「サンショップ」とする。

アクティブセルを基点に、アクティブセル領域を選択する。
選択範囲をコピーする。
新しいシートを追加する。

クリップボードにコピーされたデータを、形式を選択して張り付け、貼り付ける形式を「列幅」にする。

形式を選択して張り付けるオプションを指定する。

コピーされたデータを貼り付ける。(文字色が茶色の箇所は全て規定値の為省略可能です。






コピーモードを解除するためのコードですが、通常は、コピーモードを解除する為には「ESC」キーを押す操作に対応しています。
今回は、マクロの記録中に「ESC」を押す操作はしていませんが、オートフィルタを解除したために、自動的にこのコードが記録されました。
削除しても問題ありません。

セルの値を参照して条件が指定できるようにコードを手直しする。

D1に「得意先名」と見出しを入力し、セルE1に実際の得意先名を入力します。

これを踏まえ、先のコードの4行目を以下のように書き換えます。

Selection.AutoFilter Field:=3, Criteria1:= Range("E1").Value
セル「E1」の値を、オートフィルタの条件とします。

最後にテキストボックスの「売上抽出」にマクロを登録します。