セルの値でデータ抽出の条件を変更する。Part1 86

Excelでは、見出し列に設定された項目に従い、行単位でデータが並ぶ形式を「リスト」と呼びます。
リスト形式のデータは「オートフィルタ」機能を用いて、簡単にデータの抽出が出来ます。
そこで、まずマクロを利用して売上表から、特定の支店を絞り込み、その結果を新しいシートにコピーするマクロを作って見ましょう。

売上表にオートフィルタを設定する。

特定の支店名で、データを抽出する。

新しいシートを追加して、抽出結果をコピーする。

 売上表のあるシートに戻り、オートフィルタを解除する。

マクロの記録開始
1.マクロの記録画面で、マクロ名 を入力し、「OK」をクリックします。
2.マクロの記録を開始します。
3.リスト内のセル(A8)を選択し、明示的に「Sheet1」を選択します、
 メニューバー「データ」「フィルタ」「オートフィルタ」を選択します。
データの抽出
4.特定の「支店名」を選択して、データを抽出する。
抽出結果
6.指定した「支店名」が表示される。
抽出結果を選択・コピーして新しいシートに貼り付けます。
7.キーボードから「Ctrl」キーを押しながら「*」キーを押データを選択 します。
ノートパソコンの場合は、「Ctrl]「Shift」キーを押しながら「*」キーを押します。
8.ツールバーから「コピー」を選択します。 新しいシートを挿入します。
9.「sheet1」の上で右クリックし、「挿入」を選択し、新しいワークシートを挿入します。
メニューバーから操作する場合は、「挿入」「ワークシート」をクリックします。
抽出データを新しいシートに貼付けます。
10.「貼付け」ボタン横の▼ボタンを押し、メニューを表示し、「形式を選択して貼付け」をクリックします。
11.「列幅」を選択し、「OK」をクックします。
すると元のデータの列幅がコピーされます。
12.次に「貼付け」をクリックします。
データが貼付けられます。
次に任意のセルを選択し、選択状態を解除します。
12.「Sheet1」見出しをクリックし、売上表を表示します。 オートフィルタを解除します。
13.メニューバー「データ」「フィルタ」「オートフィルタ」を選択します。
選択状態を解除します。
14.任意のセルを選択し、選択状態を解除します。
最後に、記録終了ボタンをクリックします。
Sub データの抽出()
'
' データの抽出 Macro
' マクロ記録日 : 2003/12/15 ユーザー名 : iida yoshio
'

'Sheets("Sheet1").Select (1)
Range("A8").Select (2)
Selection.AutoFilter (3)
Selection.AutoFilter Field:=2,(4) Criteria1:="東京"(5)
Range("C4").Select
Selection.CurrentRegion.Select
Range("C17").Select
Selection.CurrentRegion.Select
Selection.Copy
Sheets("Sheet1").Select
Sheets.Add
Selection.PasteSpecial Paste:=xlPasteColumnWidths,_ Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ActiveSheet.Paste
Sheets("Sheet1").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
End Sub
’1 売上表のあるシートを選択します。
’2 表の中の任意のセル「A8」を選択します。
’3 リストにオートフィルタを設定します。
’4 Field→リストの左から2列目をオートフィルタの抽出対象とします。
’5 Criteria1→条件は「東京」とします。
※Criteria1は、一つ目の条件を指定する為の引数です。




Selection→アクティブ領域を基点に
※1 CurrentRegion→アクティブセル領域を
Select→選択する
Selection.Copy→選択範囲をコピーする。
※2 Sheets.Add→新しいシートを挿入する。
Selection.PasteSpecial→形式を選択して貼付け
Paste:=xlPasteColumnWidths→貼付け形式を「列幅」にする
Operation:=xlNoneSkipBlanks:=False, Transpose:=False→形式を選択して張り付けるオプションを指定する。
ActiveSheet.Paste→データを貼り付ける。
Application.CutCopyMode = False→コピーモードを解除する。

※3.4 Selection.AutoFilter’フィルタを解除します。

※1 CurrentRegionとは、アクティブ領域を参照する為のプロパティです。
アクティブ領域とは、空白行や、空白列に仕切られたセル範囲です。

※2 位置を指定してシートを挿入するには?
WorkSheet.Add After:=WorkSheet("シート名")
なおマクロの記録では、「Sheet.Add」と記録されますが「Worksheet.Add」と記述するほうが一般的です。

※3 フィルタの設定状態に応じて、オータフィルタを解除するには、下記のように設定します。

Sub  フィルタ解除
    If ActiveSheet.AutoFilterMode = True Then
       Selection.AutoFilter
    End If
End Sub

※4 オートフィルタを解除せずに、絞込みだけを解除するには、
Selection.AutoFilter→ActiveSheet.ShowAllDate