Terima kasih sebelumnya, saya mencoba mencocokkan nilai dari sheet1 di kolom "D" ke kolom A dari sheet2 dan jika ada yang cocok, salin tempel seluruh baris ke sheet3 dan kemudian hapus seluruh baris dari sheet1.

Kode di bawah ini berfungsi dengan baik untuk mencocokkan dan menghapus:

Sub remDup()
Dim LR As Long, i As Long
With Sheets("Sheet1")
    LR = .Range("D" & Rows.Count).End(xlUp).Row
    For i = LR To 1 Step -1
        If IsNumeric(Application.Match(.Range("D" & i).Value, Sheets("Sheet2").Columns("A"), 0)) Then .Rows(i).Delete
    Next i
End With
End Sub

Tetapi tidak menempelkan baris yang dihapus di sheet3.

Mencoba melakukan sesuatu seperti tetapi tidak berhasil.

Sub remDup()
Dim LR As Long, i As Long, n As Long
With Sheets("sheet1")
    LR = .Range("D" & Rows.Count).End(xlUp).Row
    For i = LR To 1 Step -1
        If IsNumeric(Application.Match(.Range("D" & i).Value, Sheets("sheet2").Columns("A"), 0)) Then Sheets("sheet3").Row(n) = Rows(i) & .Rows(i).Delete
        n = n + 1
    Next i
End With
End Sub

Tolong bantu, dan saya juga harus mencocokkannya dengan tiga kolom di lembar 2 (A, B dan C) tetapi dalam kode ini saya telah melakukannya dengan kolom A saja dan berpikir bahwa akan menjalankan kode yang sama tiga kali dengan mengubah nama kolom .

Apakah ada cara untuk melakukannya sekaligus.

Terima kasih lagi.

0
S K 6 September 2016, 12:19
Jika kode Anda berfungsi dengan baik untuk mencocokkan dan menghapus, tambahkan Worksheets("Sheet1").Rows(i).Copy Worksheets("Sheet3").Rows(n) di dalam klausa if Anda. Dan tambahkan End if yang kurang.
 – 
CMArg
6 September 2016, 17:48

1 menjawab

Jawaban Terbaik

Mungkin ini bisa membantu Anda. DIEDIT. Fungsi IsInArray dari JimmyPenna. Tautkan di sini.

Sub remDup()
Dim LR As Long, LRSheet2 As Long, i As Long, a As Long
Dim vAllSheet2Values() As Variant

LRSheet2 = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
LR = Worksheets("Sheet1").Cells(Rows.Count, 4).End(xlUp).Row
a = 1

For i = 1 To LRSheet2 'Load all values in ColumnA of Sheet2 into an array
    ReDim Preserve vAllSheet2Values(i)
    vAllSheet2Values(i) = Worksheets("Sheet2").Cells(i, 1).Value
Next i

For i = LR To 1 Step -1
    If IsInArray(Worksheets("Sheet1").Cells(i, 4).Value, vAllSheet2Values) Then
        Worksheets("Sheet1").Rows(i).Copy Worksheets("Sheet3").Rows(a)
        Worksheets("Sheet1").Rows(i).Delete
        a = a + 1
    End If
Next i
End Sub

'https://stackoverflow.com/a/11112305/1726522
Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean
    IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1)
End Function
0
Community 23 Mei 2017, 13:32
Terima kasih banyak telah membantu tetapi sepertinya ada sedikit hal yang tidak saya jelaskan dengan baik. Dengan kondisi di bawah ini maksud saya, saya ingin mencari di seluruh rentang If IsNumeric(Application.Match(.Range("D" & i).Value, Sheets("sheet2").Columns("A"), 0)) if I lakukan If Worksheets("Sheet1").Cells(i, 4).Value = Worksheets("Sheet2").Cells(i, 1).Value maka itu akan menjadi pencocokan baris ke baris statis saja dan jika nilainya keluar di beberapa baris lain maka akan dilewati. Tolong bantu
 – 
S K
6 September 2016, 15:43
Scott terkasih, Anda pernah membantu saya dan saya ingin tahu apakah Anda dapat membantu saya sekarang di sini karena terjebak dalam masalah konyol.
 – 
S K
6 September 2016, 15:51
Saya tahu saya beberapa tahun cahaya di belakang ScottCraner, tetapi umpan balik untuk upaya saya akan menyenangkan. Apakah kode membantu Anda?
 – 
CMArg
6 September 2016, 22:02
Ya itu tidak. Terima kasih!!
 – 
S K
8 September 2016, 15:09
Senang untuk membantu.
 – 
CMArg
8 September 2016, 18:24