• ベストアンサー

該当リストにない行を削除させる方法

以下のようなファイル構成で、ワークシート2に記載した該当リストを参照して、該当しない行をワークシート1から削除させるマクロを教えて下さい。 【ワークシート1】 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 1組 田中 10 ・・ 15 2組 鈴木 15 ・・ 20 3組 高木 20 ・・ 15 【ワークシート2】 山田 鈴木 ↓↓↓ 実行結果 A列 B列 C列 ・・ X列 1組 山田 10 ・・ 10 2組 鈴木 15 ・・ 20

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

各シート1行目からデータがあると仮定して。 Sub try() Dim myDic As Object Dim r As Range, rr As Range Set myDic = CreateObject("Scripting.Dictionary") With Worksheets("Sheet2") For Each r In .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)) myDic(r.Value) = Empty Next End With With Worksheets("Sheet1") For Each rr In .Range(.Range("B1"), .Cells(Rows.Count, 2).End(xlUp)) If Not myDic.Exists(rr.Value) Then rr.ClearContents End If Next .Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp)).Offset(, 1) _ .SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With Set myDic = Nothing End Sub 一例として。

negisama
質問者

お礼

回答ありがとうございます。 イメージどおりの動作が出来ました。 マクロは素人なので、非常に勉強になりました。 >各シート1行目からデータがあると仮定して。 実際はタイトル行もあるので、読み始めのセル番地を変更することで 利用する事ができました。 即利用可能な回答を頂きましたので、非常に助かりました。 ありがとうございます。

すると、全ての回答が全文表示されます。

関連するQ&A