プロが教えるわが家の防犯対策術!

オートフィルタで選択したデータのみ残し、それ以外のデータを消す方法があれば教えてください。

この作業を繰り返して、マスタを分割し、企業名ごとのファイルを作成したいのです。
よろしくお願いします。

A 回答 (4件)

企業名ごとのファイルを作成したいとのことですので、オートフィルタで選択したデータのみを別ファイルに抽出されてはどうでしょうか。


参考までにExcel2003でしたら次の手順で試してみてください。

Altキー押しながらF8キーを押します。
 ↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:抽出)
 ↓
名前を入力しましたら、「作成」をクリック
 ↓
Microsoft Visual Basicの画面が開きますのでSub 抽出()の下に次のコードをコピーして貼り付けてください。

Dim OUTファイル, シート名, ファイル名 As String
Dim cnt As Long
シート名 = ActiveSheet.Name
cnt = 1
Do
With Sheets(シート名).AutoFilter.Filters(cnt)
On Error Resume Next
ファイル名 = Right(.Criteria1, Len(.Criteria1) - 1)
End With
cnt = cnt + 1
Loop Until cnt > 256
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Range("A1").Select
OUTファイル = Application.GetSaveAsFilename(InitialFileName:=ファイル名 & ".xls")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=OUTファイル
Application.DisplayAlerts = True
ActiveWorkbook.Close False
Sheets(シート名).Select
Sheets(シート名).Range("A1").Select
'****コピー貼り付けはここまで ****
Microsoft Visual Basicの画面を×で閉じます。

使い方は、オートフィルタで選択した状態でAltキー押しながらF8キーを押します。
マクロのダイアログが表示されるので先ほど名前を付けたマクロを選択して「実行」をクリック。
(選択されている状態でしたら、そのままEnterキーで実行されます。)
保存先を聞いてきますので保存先を指定して保存してください。
ファイル名は、オートフィルタで選択した名前がつくようにしています。
    • good
    • 1

こんにちは。



見えているものを、範囲選択してコピーすれば、見えている分だけ、別のシートに張り付くはずですね。

削除するなら、補集合の考え方を用い

オートフィルタで
「選択したデータのみ」が出ている反対、つまり、「選択していないデータ」つまり、オートフィルタの選択の中の、
「○○○の等しくない」データをオートフィルタで出して、消去すればよいのではありませんか?
    • good
    • 6

オートフィルタの方は、該当しないものの行を、非表示にするだけである。


オプションで(例)aと「等しくない」を指定して、削除しても、aの行は飛び飛びで、コピー等して別シートを作るのに適さない。
ーーー
データーフィルターフィルタオプションの設定の方でやればよい
例 データ A1:B7 項目見出しは必須
データ属性
ax
sy
dz
af
sg
ad
ーーー
F1:F2に
データ
a
ーーー
J1:K1にデータ 属性と入れておく
ーーー
A1:B7を範囲指定
データーフィルターフィルタオプションの設定
指定した範囲をON
リスト範囲 A1:B7
検索条件範囲 F1:F2
抽出する範囲 J1:K20
OK

データ属性
ax
af
ad
ーーー
別シートへ抜き出す方法
(以下は解説書に余り書いてない箇所ですから注意)
上例のデータがSheet2にあるとする。
Sheet3に抜き出し結果を出す場合
Sheet3のA1:B1にデータ 属性と入れておく
そして
データーフィルターフィルタオプションの設定
フィルタオプションのダイアロウグが出る。
指定した範囲をON
リスト範囲 
斜め矢印をクリックする。
シートタブSheet2をクリック
(Sheet2の)A1:B7を指定。Sheet2!A1:B7が入る
検索条件範囲 
斜め矢印をクリックする。
シートタブSheet2をクリック
(Sheet2の)F1:F2を指定。Sheet2!F1:F2が入る
F1:F2
抽出する範囲 
Sheet3にもどって、A1:B20(Sheet3!は付かない)
OK
結果
Sheet3 A1:B4 に
データ属性
ax
af
ad
====
大体この問題はVBAででも処理するのが、相応しい課題です。
ーー
関数でやるなら、中間列に該当行に連番を振って別シートに抜き出し方法(imogasi方式、WEB照会のこと)があるが、抜き出し会社が複数あるので、結果を値複写して、式を消す必要があり、素の段階の固定的内容になる。
    • good
    • 2

ご質問の趣旨と少し違いますが、抽出されたデータを他のセルまたはシートに貼り付けする手順例を下記します。

(Excel 2003 以前の場合)

1) コピーするセル範囲を選択します。
2) 「編集」→「ジャンプ」または「Ctrl+G」→「セル選択」→「可視セル」をオンにして「OK」を押します。

3) 「編集」→「コピー」または「Ctrl+C」で、点滅する破線が表示されます。
4) 貼り付け先のセルを選択して、「編集」→「形式を選択して貼り付け」→「列幅」をオンにして「OK」を押します。列幅がコピーされます。

5) 「編集」→「貼り付け」または「Ctrl+V」で、データが張り付けされます。

行の高さもコピーしたい場合は、1)でセル範囲に代えて、行範囲を選択します。

お試し下さい。
    • good
    • 5

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています