• ベストアンサー

オートフィルタで抽出したデータの行を削除(VBAで記述)

Excel2000を利用しています。 VBAで、オートフィルタを利用した作業を記述したいと思っています。 データは一行目にタイトルが入っています。 オートフィルタで抽出したデータを その行まるまる削除したいと思っています。 その時、タイトル行(1行目)を除いて オートフィルタで抽出された行のみ選択して 削除する、という場合、どのように記述すればよいのでしょうか。 自分では全然分からないので 教えてください、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1の者です。操作を間違えて回答ボタンを押してしまいました。少し追加させてください。 このマクロは、最終列まですべての列にデーターが入力されていないとうまく動作しません。 myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(2, 0).Address マクロのこの部分は、タイトル行を除くデータの先頭行を取得するためのマクロです。もし、タイトル行が1行の場合は下記のように変更して下さい。 myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(1, 0).Address あなた様がVBAをご存知であることを前提として書いてあります。もし、このマクロを実行させる方法がわからない時・うまく動作しない場合は、ご遠慮なくお知らせ下さい。 私でよろしければ、あなた様のおやりになりたいことが実現するまでご一緒に考えていきたいと思います。

momon1108
質問者

お礼

ありがとうございました。 教えていただいた方法でうまくできました。 助かりました、ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

テストデータとして (A列) (B列) 氏名 年齢 山田 12 鈴木 20 大田 12 鈴木 21 上田 24 小山 18 鈴木 20 鈴木 21 (コード) 鈴木、21歳をフィルタ。そして削除。 Sub test01() '---コピー保存 Selection.Copy Range("a20") '---フィルタ With Selection .AutoFilter .AutoFilter Field:=1, Criteria1:="鈴木" .AutoFilter Field:=2, Criteria1:="21" '----削除 .SpecialCells(xlVisible).Delete '----見出し復活 '---行挿入 Range("a1").EntireRow.Insert Range("a20").CurrentRegion.Rows(1).Copy Range("a1").Select ActiveSheet.Paste End With End Sub (実行) A1:B9を範囲指定して実行。 (結果) (A列) (B列) 氏名 年齢 山田 12 鈴木 20 大田 12 上田 24 小山 18 鈴木 20

momon1108
質問者

お礼

ありがとうございます。 こういう方法もあるのですね。 次の機会にはこちらの方法もやってみます!

回答No.1

はじめまして。私でよければサンプルマクロを作ってみました。参考にしてみて下さい。 Dim myRange As String Dim myCell As String Dim myColumn As String Rows("2:2").autofilter Field:=3, Criteria1:="203 " myCell = Range("A3").SpecialCells(xlCellTypeLastCell).Address myRange = Range(myCell).SpecialCells(xlCellTypeVisible).End(xlUp).Offset(2, 0).Address myRange = Range(myRange).End(xlToLeft).Address Range(myRange & ":" & myCell).Delete

関連するQ&A

  • エクセルのシート上でオートフィルターを使った際に関する、VBA上でのコードの記述について

    大変稚拙な質問の仕方をお許しください。 エクセルのシート上で、オートフィルターを使ってデータを抽出した前提で、VBAを使ってある作業をするためのマクロを組もうと思ったのですが、抽出されて表示された一番最初データの行を確定させるコードの記述が思い浮かびません。なにかいい方法はないでしょうか?よろしくお願いします。

  • Excel VBAでオートフィルタで抽出したデータの一部だけ貼り付けるには

    いつもこのコーナーでは皆様にお世話になっております。以下のVBAマクロが組める方ご教示ください。 Sheet2にあるデータに複数条件でソートをかけ、ある数字(1から18まで)を入れたら、オートフィルタでE列のデータの選択部をSheet1のある部分に1行貼り付けるという作業です。以下のInputBoxに数字を入れるところからです。 (ソート後、どの数字を入れるか判断) ↓ InputBoxにある数字"○"(1から18まで)を入れる ↓ オートフィルタE列「"○-"で始まる」or「"-○"で終わる」 ↓ 抽出されたデータのE列(1列だけ)のデータ(上から17個分)を選択 ↓ 選択部をコピー ↓ Sheet1を選択。Sheet1の"K5"セルに行列を入れ替えて貼り付け という流れなのですが・・・ わかる方教えてください。よろしくお願いします。

  • EXCELでオートフィルタが使えないのですが・・・

    外注先から届いたデータをオートフィルタで日付を抽出しようとしたら、データ→フィルタをのぞくと、肝心な「オートフィルタ」がグレーになってて、機能が使えない状態になっています。 データは1行目に表題、2~4行目にかけて、タイトル行が作られています。 2行目→              支給 3行目→            貼合  注入 4行目→ ロットNo.  日付   日   期限   大板  処理数 良品 データ→ Q3118G  2/26  2/23  3/16   20   1920   1851 こんな感じなのですが、なぜかフィルタがかかりません。 2~3行目のタイトルを削除しても、やっぱりダメでした。 Win98 EXCEL2000使用です。宜しくお願いします。

  • 【エクセル マクロ】オートフィルター後の行削除

    Excel2003を使用しています。 オートフィルターを利用した作業をマクロの記録で処理していて 抽出されたデータを行ごと削除しているのですが Selection.AutoFilter Field:=1, Criteria1:="仕入先コード" Rows("4:2102").Select Selection.Delete shift:=xlUp Selection.AutoFilter Field:=2, Criteria1:="仕入先合計" Rows("7:2008").Select Selection.Delete shift:=xlUp …と、上記のような行番号で指定されてしまい 毎月データ数が増減するので、うまく処理出来ません。 (データは、テキストファイルからエクセルに取り込んでいます) 過去の例で近いものがあれば記述の中に取り込んでみましたが… これもうまくいきませんでした。 毎月変わるデータ数に対応できるマクロの記述を教えて下さい。 よろしくお願いします。

  • Excel2003 オートフィルタで「*」を抽出

    Excel2003でオートフィルタを使って文字列「*」を含む行を抽出したいのですが、どのようにすれば抽出できますか?

  • VBAでオートフィルタの可視セルクリア後空白行削除がうまくできません

    VBA初心者です。 オートフィルターで抽出した行を削除したくて、以下のように書いたのですが、最後の一文でエラーになってしまいます。 ◆エラー内容◆ 実行時エラー1004 重複する選択範囲に対してそのコマンドを使用することはできません。 ◆書いたVBA◆   Range("A2").Select Selection.AutoFilter Field:=1, Criteria1:="=1111", Operator:=xlAnd 'オートフィルターで「1111」を抽出 Dim r As Range Set r = Range(Range("A3"), Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) r.ClearContents 'A列の可視セルの値をクリア Range("A2").Select Selection.AutoFilter 'オートフィルターの解除 r.SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'A列が空白の行は削除→ ココがエラーになります --------------------------------------------------------- 元のファイル構成は2行目に項目名で、3行目からデータが入っています。 いろいろ調べたのですが、よくわからなかったので教えていただければ 幸いです。 宜しくお願いします。

  • EXCEL VBAでオートフィルタ後の最終行を取得したい

    いつもお世話になります。 WIN98-EXCEL2000での作業です。 VBAでオートフィルタをかけるところまでは出来たのですが、A列:Q列までの表のうち、A2~K列の最終行までをコピーしたい場合のコマンドを教えてください。 また、オートフィルタで検索されなかった場合はコピーはしない場合、どうしたらよいのでしょうか? よろしくお願いします。

  • 【マクロ】オートフィルター内の全データが削除される

    こんにちは、質問させていただきます。宜しくお願いします。 [エクセル] 2007 [内容] オートフィルタをかけ任意のデータのみ消したいのですが 全てのデータが消えてしまいます。 [詳細] A1~C5までデータが入っているのもだと仮定します。 (実際には項目があってフィルタがきちんとかかるものとします。)    A   B   C ----------------------- 1  ○   2個  \10 2  △   1個  \5 3  ×   3個  \15 4  ○   1個  \20 5  ○   4個  \5 オートフィルタをかけA列を基準として「○」を選択します。 そして選択した「○」を含む行(1行・4行・5行)を削除し 2行・3行目が残るようにしたいです。 その一連をマクロにして処理したいのですが… 1行から5行のすべての行データが削除されてしまいます。 <マクロ作成> マクロを記憶する。 ↓ 手動でオートフィルタをかけ、「○」を選択して行を削除 ↓ マクロの記憶を終了。 ↓ マクロ文の削除する行範囲をA1からC5に書き換え ↓ マクロ実行 <マクロ作成文>  Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="○" ActiveSheet.Range("A1:C5").Select Selection.Delete Shift:=xlUp ※エクセル2007のバージョンによっては選択した「○」のみ 削除されるPCもありましたので、何か設定があるのかな?と 思いましたが…解決しませんでした。 何か良い案があれば教えていただきたいです。 宜しくお願い致します。

  • オートフィルタで抽出したデータの切り取り

    エクセルのオートフィルタ機能でデータを抽出した時、 そのデータを切り取ると抽出したデータの最初の行から最後の行までが切り取られてしまいます。 (表示(抽出)されていないデータも一緒に切り取られてしまう) 抽出されたデータだけを切り取る方法はありませんか? コピーではなく切りとっていきたいのです。

  • Excel VBAでオートフィルタで抽出したデータの一部だけ貼り付けるには(第2弾)

    今週質問タイトルの件で回答いただき解決したのですが、更なる操作を希望したく質問させていただきました。内容は Sheet2にあるデータに複数条件でソートをかけ、ある数字(1から18まで)を入れたら、オートフィルタでE列のデータの選択部をSheet1のある部分に1行貼り付けるという作業です。以下のInputBoxに数字を入れるところからです。 (ソート後、どの数字を入れるか判断) ↓ InputBoxにある数字"○"(1から18まで)を入れる ↓ オートフィルタE列「"○-"で始まる」or「"-○"で終わる」 ↓ 抽出されたデータの右隣のF列(1列だけ)のデータ(上から17個分)を選択 ↓ 選択部をコピー ↓ Sheet1を選択。Sheet1の"K5"セルに行列を入れ替えて貼り付け というものでしたが、これはできました。ここから先です。 Sheet1のU5セルに先ほどインプットした数字"○"(1から18までのどれか)を入れる ↓ Sheet2にてオートフィルタE列「"○-"で始まる」or「"-○"で終わる」によって抽出されたデータの一番上の文字列から「"○-"」もしくは「"-○"」を除いて残った数字(○を除く1から18までの数字)をSheet1のW5セルに(先ほどのセルとは1個飛ばして)入れる ↓ 以下抽出されたデータの上から2番目の文字列を同様に操作し、1個飛ばしのセルY5に入れる。これがBC5セルまで続く というものです。難しいとは存じますが、どなたか教えていただけませんか? よろしくお願いいたします。

専門家に質問してみよう