既存の名簿から社員だけを抽出して新しい名簿を作成するには?

Question 75.1   Previous Next
初めまして。                        在籍名簿シート
既存のエクセル名簿(右図参照)からVBAを使ってデータを抽出し、別途エクセルデータにアンケート用で名簿を作成したいと思います。
具体的にご説明しますと、
・ 「在籍名簿シート」の「所属Ⅰ」が「社
 員」となっているデータのみを抽出し、
・ 新しいブックに「社員のみシート」とし
 て作成したくて、
マクロの記録でいろいろ試してみました。
しかし、社員のみを抽出するマクロが、どうしても分かりません。 申し訳ありませんが教えてください。
Answer   Copyright (C) 2005.8.24 永井善王
右図のように仕上がればよいのですね。
社員のみの抽出は、オートフィルタで出来ますよ。
さっそく、やってみましょうか。
「在籍名簿シート」を表示して、新しいマクロの記録を開始し、A1セルを選択して、[データ]メニュー→[フィルタ]→[オートフィルタ]とクリックします。
すると、見出しの各項目にドロップダウン矢印が表示されますから、左図のように (1)、(2) の順でクリックし、社員だけを表示させます。

この抽出結果をコピーするために、まずは、[編集]メニュー→[ジャンプ]とクリックして、 [ジャンプ]ダイアログが表示されたら、[セル選択]ボタンをクリックします。
そして、表示された [選択オプション]ダイアログの [アクティブ セル領域]オプションボタンをクリックして、[OK]ボタンをクリックします。
画面が左図のように表示されていることを確認してから、[編集]メニュー→[コピー]とクリックします。

新しいブックに貼り付けるために、[ファイル]メニュー→[新規作成(空白のブック)]とクリックし、A1セルを選択して、[編集]メニュー→[貼り付け]とクリックします。
以上で終わりましたから、マクロを記録終了します。
下記のようなマクロが出来ているはずです。 (コメントは筆者が付記しました)
Sub Macro1()
    Range("A1").Select                          'A1セルを選択
    Selection.AutoFilter                        'オートフィルタ矢印を表示
    Selection.AutoFilter Field:=5, Criteria1:="社員" '「社員」を抽出
    Selection.CurrentRegion.Select              'アクティブセル領域を選択
    Selection.Copy                              '選択範囲をコピー
    Workbooks.Add                               'ブックを新規作成
    Range("A1").Select
    ActiveSheet.Paste                           '貼り付け
End Sub
もしも、出来上がったシートを加工(例えばA~B列を削除)したければ、マクロ記録を終了する前に、そのように操作するか、後で別に記録して、このマクロと一体化します。 業務にあわせて色々工夫すされると良いでしょう。
では、頑張って完成させましょう。

 

Excel VBA Macro