- ベストアンサー
EXCEL 2つの特定の文字列がある行を残して削除
EXCELにて2つの特定の文字列が含まれる行を残して削除したいと思っております。 A列50行にそれぞれ"年賀状""喪中""名刺"がランダムに羅列されていて、その中から"年賀状"と"喪中"の行だけを残して"名刺"の行は削除したいと思ってます。(B列以降は注文番号、枚数、氏名等が入力されています) 以下のコードで1つだけは可能でしたが、色々試しても2つはできませんでした。(コードは拾い物を少しアレンジ) Sub MacroTest1() Dim keyWord As Variant Dim FirstAdd As String Dim UR As Range Dim c As Range Const col As Long = 1 '列数 keyWord = "年賀状" If VarType(keyWord) = vbBoolean Or Len(keyWord) = 0 Then Exit Sub With ActiveSheet With .UsedRange Set c = .Find( _ What:="*" & keyWord & "*", _ LookIn:=xlValues, _ LookAt:=xlPart, _ SearchOrder:=xlByRows) If Not c Is Nothing Then FirstAdd = c.Address Set UR = c Do Set c = .FindNext(c) Set UR = Union(UR, c) If c.Address = FirstAdd Then Exit Do Loop Until c Is Nothing End If End With If Not UR Is Nothing Then UR.EntireRow.Hidden = True .UsedRange.SpecialCells(xlCellTypeVisible).Delete .UsedRange.EntireRow.Hidden = False End If End With End Sub どうか宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2項目以外を削除なら、こんな感じでも Sub sakujyo() Dim x, y, z y = "年賀状" z = "喪中" Application.ScreenUpdating = False For x = 50 To 2 Step -1 If InStr(Cells(x, 1), y) > 0 Then ElseIf InStr(Cells(x, 1), z) > 0 Then Else Rows(x).Delete End If Next x Application.ScreenUpdating = True End Sub
その他の回答 (3)
- kmetu
- ベストアンサー率41% (562/1346)
"名刺"の行は削除したいということですから 名刺の行を探して削除したほうが早いと思います。 Sub test() For i = 1 To Range("A" & Rows.Count).End(xlUp).Row If Range("A" & i).Value = "名刺" Then Rows(i).Delete i = i - 1 End If Next i End Sub
お礼
この方法は思い付きませんでした。 確かにこちらの方がスマートですね。 勉強になります。有難うございました。
- hige_082
- ベストアンサー率50% (379/747)
>(コードは拾い物を少しアレンジ) ふ~ん、じゃあ都合よく拾われたり、捨てられても良いコードにしておきます Sub test() Dim i As Integer For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1 If Cells(i, 1).Value = "名刺" Then Rows(i).Delete Next i End Sub ご自由にどうぞ
お礼
自分で書ける技量があれば良いのですが、 本等を参考に色々弄ってますが難しいです。申し訳ございません。 回答有難うございました。
- hallo-2007
- ベストアンサー率41% (888/2115)
方法が異なりますが。 >"名刺"の行は削除したいと ですので、オートフィルターで名刺のみ表示させて 行を選択、削除すれば如何でしょうか。 VBAでしたら、マクロの記録で大丈夫です。 マクロの記録を開始 1、オートフィルターを設定 2、A列、名刺を表示 3、行をたっぷりと選択(50行目以下まで選択しておきます) 4、行の削除 5、オートフィルターの解除 マクロの記録の終了 の操作をしてみてください。 置換えとジャンプの機能を利用しても出来ると思います。
お礼
ん~、目から鱗です。 どうしてもコードで、と思うとそちらにだけ目が向いちゃって… マクロの記録でも大丈夫ですね。 有難うございました。
お礼
見事に思い通りになりました。 有難うございました。 自分の勉強不足を痛感しております。