• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:参照元を削除したい)

参照元を削除する方法とは?

このQ&Aのポイント
  • 参照元シートのA列で参照先のA列を検索し、参照先に参照元の内容があれば参照元を行削除する方法について教えてください。
  • 現在のソースコードでは、参照元を削除するとセルのアドレスが正しくならず、意図した結果が得られないようです。参照元が削除可能になる方法を教えてください。
  • 参照元が500未満で参照先が数万ある場合、参照元を削除するための効果的な方法はありますか?

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

  • ベストアンサー
回答No.3

Option Explicit Sub DeleteRow() Dim 参照元 As Range Dim 検索CD As Variant Dim 最終行 As Long Dim nn As Long Dim S As Variant Set 参照元 = Sheets("参照元").Range("A2:A" & Sheets("参照元").Range("A" & Rows.Count).End(xlUp).Row) 最終行 = Sheets("参照先").Range("A" & Rows.Count).End(xlUp).Row 'For Each S In 参照元 For nn = Sheets("参照元").Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 S = Sheets("参照元").Cells(nn, "A").Value Set 検索CD = Sheets("参照先").Range("A4:A" & 最終行).Find(S) If Not 検索CD Is Nothing Then Sheets("参照元").Cells(nn, "A").EntireRow.Delete End If Next End Sub

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

>参照元を行削除しようとしています 一気に抽出し,一気に削除します。 sub macro1()  dim buf1 as variant  dim moto as range  dim saki as range  buf1 = worksheets("参照先").range("A1").value  worksheets("参照先").range("A1").value = worksheets("参照元").range("A1").value  set moto = worksheets("参照元").range("A1:A" & worksheets("参照元").range("A65536").end(xlup).row)  set saki = worksheets("参照先").range("A1:A" & worksheets("参照先").range("A65536").end(xlup).row)  on error resume next  moto.advancedfilter action:=xlfilterinplace, criteriarange:=saki, unique:=false  moto.offset(1).specialcells(xlcelltypevisible).entirerow.delete shift:=xlshiftup  moto.parent.showalldata  worksheets("参照先").range("A1") = buf1 end sub

回答No.1

>どうすれば参照元が削除可能になるでしょうか。 1件削除したら、削除直後にExit Subして、関数を呼ぶ所からやり直して下さい。 「行削除したら、すべて頭からやり直し」が必要です。 さもなければ(最初からやり直しが嫌ならば)「下から順に、逆順に削除」していく必要があります。