- ベストアンサー
参照元を削除する方法とは?
- 参照元シートのA列で参照先のA列を検索し、参照先に参照元の内容があれば参照元を行削除する方法について教えてください。
- 現在のソースコードでは、参照元を削除するとセルのアドレスが正しくならず、意図した結果が得られないようです。参照元が削除可能になる方法を教えてください。
- 参照元が500未満で参照先が数万ある場合、参照元を削除するための効果的な方法はありますか?
- みんなの回答 (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)
>参照元を行削除しようとしています 一気に抽出し,一気に削除します。 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
- chie65536(@chie65535)
- ベストアンサー率44% (8802/19961)
>どうすれば参照元が削除可能になるでしょうか。 1件削除したら、削除直後にExit Subして、関数を呼ぶ所からやり直して下さい。 「行削除したら、すべて頭からやり直し」が必要です。 さもなければ(最初からやり直しが嫌ならば)「下から順に、逆順に削除」していく必要があります。