
こんにちは。
特定の文字列が複数あって、その文字列があったときに行ごと削除を行いたいです。
行を削除するマクロは別の方が質問をしていて、コードは分かったのですが、
”特定の文字列”が2つ以上ある場合のコードを教えていただきたいです。
行を削除するマクロは以下の通りです。
----------------------------------------------------
Sub 特定の文字列を含む行を削除()
Dim c As Range
Dim myRow As Long
With Range("A:A")
Set c = .Find("特定の文字列")
Do While Not c Is Nothing
Rows(c.Row).Delete shift:=xlUp
Set c = .Find("特定の文字列")
Loop
End With
End Sub
----------------------------------------------------
Set c = .Find("特定の文字列")の"特定の文字列"を右側へ増やしたりしてみたのですが、
そもそもの考え方が違うのだろうな…と思いました。
詳しい方、何卒よろしくお願い申し上げます。
No.2ベストアンサー
- 回答日時:
こんにちは!
色々やり方はありますが、一例です。
尚、1行目は項目行でデータは2行目以降にあるという前提です。
まずオートフィルタを使うやり方です。
Sub Sample1()
Dim lastRow As Long
Dim myary
myary = Array("赤", "青", "紫")
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1").AutoFilter field:=1, Criteria1:=myary, Operator:=xlFilterValues
If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then
Range(Cells(2, "A"), Cells(lastRow, "A")).SpecialCells(xlCellTypeVisible).EntireRow.Select '//★//
End If
ActiveSheet.AutoFilterMode = False
End Sub
次に、コツコツループさせる方法です。
Sub Sample2()
Dim i As Long, k As Long
Dim myRng As Range
Dim myary
myary = Array("赤", "青", "紫")
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
For k = 0 To UBound(myary)
If Cells(i, "A") = myary(k) Then
If myRng Is Nothing Then
Set myRng = Cells(i, "A")
Else
Set myRng = Union(myRng, Cells(i, "A"))
End If
Exit For
End If
Next k
Next i
If Not myRng Is Nothing Then
myRng.EntireRow.Select '//★//
End If
End Sub
※ どちらも行選択でやめています。
すぐに削除したい場合は「★」の行の
>Select
を
>Delete
に変更してみてください。m(_ _)m
tom04 様
書いていただいたコードで解決しました!
とても悩んでいたので、すっきりしました。
お知恵を貸していただきありがとうございます。
No.1
- 回答日時:
こんにちは
どのような条件でテストしているのかわかりませんが、ご提示のコードは複数行に存在する場合を想定したコードになっています。
もしかすると、あちこちの列に点在するようなケースでテストしていて、うまくいかないと言っていたりするのでは?
あるいは、完全一致ではなく部分一致も削除したいといったように、どこか前提条件が違っているのかもしれません。
全体の考え方はそのままで使えるはずなので、条件が異なるところを調整すれば良いのではないでしょうか。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
ご回答ありがとうございます。
特定の文字列は複数の列で点在はして居らず、
1列に入力してあります。
上記のコードは1つの特定の文字列(例えば”赤”)を探し、特定の文字列(”赤”)を見つけ出したときに、
”赤”の行自体を削除してくれました。
特定の文字列が複数あってその行を削除したい場合(例えば”赤”と”青”と”紫”)はどうしたらいいのかなと思っていました。
説明が悪く申し訳ございません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
VBAで特定の文字を含まない列の削除方法について
Excel(エクセル)
-
-
4
エクセル 指定した文字列を含む列を削除するには
Excel(エクセル)
-
5
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
6
エクセルで特定の文字が入ってる列を削除方法
Excel(エクセル)
-
7
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
8
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
9
【VBA】条件に一致しない行を削除したい 複数条件
Visual Basic(VBA)
-
10
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
11
エクセルで特定の行を削除したいのですが。
Excel(エクセル)
-
12
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
13
エクセルVBA 特定文字以外の行削除
Excel(エクセル)
-
14
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
17
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"11485794"
Excel(エクセル)
-
18
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
19
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
20
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
vbsからバッチファイル実行時の...
-
5
エクセルで文字列の最大値を抽...
-
6
【Excel VBA】複数ある特定の文...
-
7
文字列からタブコードを取り除...
-
8
同一セル内に関数と文字列を同...
-
9
エクセルで文字列をtxtファイル...
-
10
MS SQLServer のSQLで文字列の...
-
11
VBscriptからバッチに変数を渡...
-
12
【Teraterm】文字列と変数の連...
-
13
VBA2005 16進を2桁で表示したい。
-
14
■文字コード判定■
-
15
ファイルからデータを読み込み...
-
16
Left関数とRight関数を合わせた...
-
17
Excelで3E8を3.00E+8にしない方...
-
18
VBの「As String * 128」とは?
-
19
同じ数値だったら、横の数値を...
-
20
ORCLEでの小数の表示方法の変更...
おすすめ情報
公式facebook
公式twitter