Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7920 / 13644 ツリー ←次へ | 前へ→

【35993】行の削除について ぷうたろう 06/3/17(金) 15:19 質問[未読]
【35996】Re:行の削除について Jaka 06/3/17(金) 15:48 回答[未読]
【35998】Re:行の削除について ぷうたろう 06/3/17(金) 16:11 質問[未読]
【36000】Re:行の削除について Jaka 06/3/17(金) 16:58 回答[未読]
【36001】Re:行の削除について ぷうたろう 06/3/17(金) 17:32 質問[未読]
【36049】Re:行の削除について Jaka 06/3/20(月) 9:45 回答[未読]
【36070】Re:行の削除について ぷうたろう 06/3/20(月) 13:59 お礼[未読]

【35993】行の削除について
質問  ぷうたろう  - 06/3/17(金) 15:19 -

引用なし
パスワード
   こんにちは

A列に番号、B列に型式を記入した表を作成しています。

B列に特定の文字(たとえば"M"など)を含むセルがある行だけを
削除したいのですがどうしたらよいでしょうか?

【35996】Re:行の削除について
回答  Jaka  - 06/3/17(金) 15:48 -

引用なし
パスワード
   オートフィルタして、B列を「M」を含むで抽出。
抽出したセルを選択して右クリック、行の削除。
で、いいんじゃないかと思います。

【35998】Re:行の削除について
質問  ぷうたろう  - 06/3/17(金) 16:11 -

引用なし
パスワード
   回答ありがとうございます。

VBAでやりたいので、マクロの記録をとって
オートフィルタで抽出してみました。

Range("A1").Select
  Selection.AutoFilter
  Selection.AutoFilter Field:=2, Criteria1:="=*M*", Operator:=xlAnd

この後抽出したデータだけを削除するのは
どういうコードを書けばよいのでしょうか?

【36000】Re:行の削除について
回答  Jaka  - 06/3/17(金) 16:58 -

引用なし
パスワード
   1行目の扱いがわかってないけど...。」
(対象が1行目からなので、1行目に「M」が含まれていたら削除されます。)

With Range("B1", Range("B65536").End(xlUp))
  .AutoFilter Field:=1, Criteria1:="=*M*", Operator:=xlAnd
  .SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With

【36001】Re:行の削除について
質問  ぷうたろう  - 06/3/17(金) 17:32 -

引用なし
パスワード
   1行目からいきなりデータになっております。

今回はたまたま1行目のB列に「M」は含まれておりませんでしたが
1行目に▼が出てしまうので、Mを含んでいないのに削除されてしまいました。
見出しとして1行目を追加してからオートフィルタを行った方がよいでしょうか?
(出来れば見出しが無い方が都合がよいのですが・・・)

▼Jaka さん:
>1行目の扱いがわかってないけど...。」
>(対象が1行目からなので、1行目に「M」が含まれていたら削除されます。)
>
>With Range("B1", Range("B65536").End(xlUp))
>  .AutoFilter Field:=1, Criteria1:="=*M*", Operator:=xlAnd
>  .SpecialCells(xlCellTypeVisible).EntireRow.Delete
>End With

【36049】Re:行の削除について
回答  Jaka  - 06/3/20(月) 9:45 -

引用なし
パスワード
   ▼ぷうたろう さん:
>見出しとして1行目を追加してからオートフィルタを行った方がよいでしょうか?
>(出来れば見出しが無い方が都合がよいのですが・・・)
都合が良くても無理です。1行追加してください。
追加した1行目を削除する場合、1行目を削除するコードを追加しておいてください。

Rows(1).Insert
Range("B1").Value = "EEE"
With Range("B1", Range("B65536").End(xlUp))
  .AutoFilter Field:=1, Criteria1:="=*M*", Operator:=xlAnd
  .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible). _
             EntireRow.Delete
End With

【36070】Re:行の削除について
お礼  ぷうたろう  - 06/3/20(月) 13:59 -

引用なし
パスワード
   お礼が遅くなってごめんなさい。

ちゃんと出来ました、ありがとうございました。

7920 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free