10代と話して驚いたこと

指定した文字があった場合、その行を削除するマクロが欲しいです
Sheet1(Sheet1以外は対象外)のB列に
XYZ
という文字があった場合、その行をすべて削除する
というマクロはどのように作ればいいでしょうか?
お時間ある方アドバイスいただければ幸いです。

A 回答 (3件)

手抜きですがこんな感じでどうでしょう。


削除する行が多いなら画面更新を停止した方が良いでしょう。

Sub Sample()
 Sheets("Sheet1").Select
 Do While (True)
  Columns("B:B").Select
  Set mySelect = Selection.Find(What:="XYZ")
  If mySelect Is Nothing Then Exit Do
  Rows(mySelect.Row).Select
  Selection.Delete Shift:=xlUp
 Loop
End Sub
    • good
    • 32

一例です。


半角、全角問わずxyzの文字列があれば行削除します。
シータタブ上で右クリック→コード表示→以下のコードを貼り付けてお試しください。


Sub 行削除()
For i = Cells(Rows.Count, "B").End(xlUp).Row To 1 Step -1
If InStr(1, Cells(i, "b"), "XYZ", vbTextCompare) > 0 Then
Rows(i).Delete
End If
Next
End Sub
    • good
    • 7

一例です。


Sheet1のB列に、大文字でも小文字でもXYZを含む文字列があれば、その行を削除します。

Sub test()
  Dim i As Long, x As Long
  With Sheets("Sheet1")
  x = .Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得
  For i = x To 1 Step -1 '下から順に
    If InStr("xyz", StrConv(.Cells(i, "B").Value, vbLowerCase)) > 0 Then 'xyzを含んでいれば
      .Cells(i, "B").EntireRow.Delete '行削除
    End If
  Next i
  End With
End Sub

対象が何万行もあるならもっと別の方法で高速化も図れますが、お勉強でしょうから一応オーソドックスで方法を書きました。
    • good
    • 5

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

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


おすすめ情報

このQ&Aを見た人がよく見るQ&A