Vậy bạn thay Sub cũ bằng Sub này rồi chạy thử với dữ liệu >3000 dòng xem sao.Số liệu e chỉ lấy ví dụ thôi ạ, chứ số liệu của e phải tầm >3000 dòng a ạ
Option Explicit
Public Sub sGpe()
Dim sArr(), dArr(), I As Long, R As Long
sArr = Range("A5", Range("A60000").End(xlUp)).Resize(, 4).Value
R = UBound(sArr)
ReDim dArr(1 To R, 1 To 1)
With CreateObject("Scripting.Dictionary")
For I = 1 To R
.Item(sArr(I, 3) & "#" & sArr(I, 4)) = I
Next I
For I = 1 To R
dArr(I, 1) = "Error"
If .Exists(sArr(I, 1) & "#" & sArr(I, 2)) Then dArr(I, 1) = "OK"
Next I
End With
Range("E5").Resize(R) = dArr
End Sub
Tại vì trường hợp này đít sần chưa chắc đon giảnSao Ba Tê không dùng Dít- To, 2 vòng lặp chạy đúng số dòng của dữ liệu, viết thế này nó chạynhiều hơn hay sao í
Thân
Theo mình, bài #1 là so sánh ngang hàngBài này đâu phải so sánh ngang hàng đâu. Ngay công thức trong bài #1 đã không đúng rồi.
Gần gây có một bài cũng so sánh như này và thêm yêu cầu đẩy dòng cho khớp nữa..
View attachment 221247