0

シート 1 の列 L とシート 2 の列 A の一致に基づいて、Excel の CSV ファイル内の複数の行を削除する必要があります。内容はメールアドレスです。どうすればこれを達成できますか?

そのため、シート 2 の列 A にシート 1 のいずれかのメール アドレスと一致するメール アドレスがある場合、列 L は、そのメール アドレスがあるシート 1 から行全体を削除する必要があります。

以下のシート1: シート1

以下のシート2: シート 2

@mehow、コードをモジュールとして実行したときに得られる画像は次のとおりです。 mehow のコードのエラー

4

1 に答える 1

1

これは、ループを一切含まないため、あなたがしようとしていることに対して非常に高速に機能します。

Sub DeleteDuplicates()

Dim StartingScreenUpdateValue As Boolean
Dim StartingEventsValue As Boolean
Dim StartingCalculations As XlCalculation

With Application
    StartingScreenUpdateValue = .ScreenUpdating
    StartingEventsValue = .EnableEvents
    StartingCalculations = .Calculation
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
End With


Dim varTestValues As Variant
Dim sh1 As Worksheet
Dim sh2 As Worksheet

Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")

With sh2
    varTestValues = .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
End With

sh1.Range("L1", sh1.Range("L" & sh1.Rows.Count).End(xlUp)) _
    .AutoFilter Field:=12, Criteria1:=Application.Transpose(varTestValues), Operator:=xlFilterValues

sh1.Range("L2", sh1.Range("L" & sh1.Rows.Count).End(xlUp)) _
    .SpecialCells(xlCellTypeVisible).EntireRow.Delete

sh1.AutoFilterMode = False

With Application
    .ScreenUpdating = StartingScreenUpdateValue
    .EnableEvents = StartingEventsValue
    .Calculation = StartingCalculations
End With

End Sub

注:このコードは、アドバイスがない場合、データにヘッダーがあると仮定して実行されます。

覚えておいてください 100% 動作することを確認するまでは、実際のデータではなく、常にデータのコピーに対してコードを実行してください。

于 2013-10-07T15:02:52.157 に答える