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.
1 menjawab
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
Worksheets("Sheet1").Rows(i).Copy Worksheets("Sheet3").Rows(n)
di dalam klausaif
Anda. Dan tambahkanEnd if
yang kurang.