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