教えて! goo のコンテンツに対する取り組みについて

住所のデータベースのようなエクセルワークシートがあります。
特定の単語(札幌市、青森市、仙台市、等など)を含む行を
一括で削除するマクロを作成したいのですが、どなたか教えて
ください。

特定の語がたくさんあって、簡単に行を削除したいです。

データは、A列にしか入っていないです。

gooドクター

A 回答 (2件)

こんばんは!



元データはSheet1にあり、削除したい文字列をSheet2のA1セルからA列に羅列しておきます。

一例です。標準モジュールにしてください。

Sub Sample1()
Dim i As Long, wS As Worksheet
Dim myFirst As Range, myFound As Range, myRng As Range
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
'削除したい文字列を一旦「#」に置き換える//
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").Replace what:=wS.Cells(i, "A"), replacement:="#", lookat:=xlPart
Next i
'「#」が含まれている行をmyRngに格納し、一気に削除//
Set myFound = .Range("A:A").Find(what:="#", LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = .Range("A:A").FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
myRng.EntireRow.Delete shift:=xlUp
End If
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

こんにちは、回答ありがとうございます。

tom04さんに教えて頂いた例で、期待した結果がでました。

超感謝です!

お礼日時:2015/07/14 12:53

実際には、マクロであっても、なくても構わないと思いますが、基本的には簡単なマクロです。


仕組みは、
オートフィルターを掛ける→該当する言葉を1列から探す→それらを見えている範囲を選択する→削除

>特定の単語(札幌市、青森市、仙台市、等など)を
この場合は、「市」ですが、なかなか、そうはいかないのかもしれません。
検索する語そのものが、複数ある場合は、また、更にマクロのコードが加わりますので、その時は、ご相談ください。また、条件としては、オートフィルターが掛けられるような表の形態(四角形のデータ群)になっていることです。時々、そういう状態でない方の相談があり、マクロは動きませんでした、ということがます。


'//
Sub FoundWordDelRow()
 Dim FirstCell As Range
 Dim Rng As Range
 Dim r As Range
 Dim r2 As Range
 Dim Crit1 As String
 Set FirstCell = Range("A1")
 Crit1 = "*あ*" 'センテンス中では、必ず、「*」を入れること
 With ActiveSheet
  If .AutoFilterMode Then
   .AutoFilterMode = False
  End If
  FirstCell.CurrentRegion.AutoFilter _
  Field:=1, Criteria1:="=" & Crit1
  With .AutoFilter.Range
   Set r = .Offset(1).Resize(.Rows.Count - 1) '項目行を保護するため
  End With
  On Error Resume Next
  Set r2 = r.SpecialCells(xlCellTypeVisible)
  If Err() <> 0 Then
   Set r2 = Nothing
  End If
  On Error GoTo 0
  .AutoFilterMode = False
  If Not r2 Is Nothing Then
   r2.Delete (xlShiftUp)
  Else
   MsgBox "検索語の『" & Crit1 & "』は見つかりませんでした。"
  End If
 End With
End Sub
'///
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

オートフィルターは試してみたのですが、私の思うもの
とちょっと違っていたので、マクロで解決したいなと思っ
いました。

上記の方法も、試してみたいと思います。

お礼日時:2015/07/14 12:57

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

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

gooドクター

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

人気Q&Aランキング