Nhờ các Thầy đoạn code sau, xem có vấn đề gì về giải thuật không, mà em kiểm tra hoài không thấy, xem như các điều kiện trong code đều thoả mãn.
[gpecode=vb]
Sub Button2_Click()
Dim iR As Long, jR As Long, kR As Long, sArr(), CpArr(), rArr()
sArr = Sheet2.Range("A2:Q" & Sheet2.[C1000000].End(3).Row).Value
CpArr = Sheet3.Range("J10:J" & Sheet3.[J1000000].End(3).Row).Value
ReDim rArr(LBound(CpArr, 1) To UBound(CpArr, 1), 1 To 7)
Sheet1.[A4].CurrentRegion.ClearContents
For iR = 1 To UBound(sArr, 1)
If Len(sArr(iR, 1)) Then
If Left(sArr(iR, 1), 1) = "C" And Mid(sArr(iR, 1), 4, 1) = "K" Then
For jR = 1 To UBound(CpArr, 1)
If sArr(iR, 2) = CpArr(jR, 1) Then
kR = kR + 1
rArr(kR, 1) = kR
rArr(kR, 2) = sArr(iR, 1)
rArr(kR, 3) = sArr(iR, 2)
rArr(kR, 4) = sArr(iR, 3)
rArr(kR, 5) = sArr(iR, 16)
rArr(kR, 6) = sArr(iR, 17)
rArr(kR, 7) = sArr(iR, 4)
End If
Next jR
End If
End If
Next iR
If kR Then
Sheet1.[A5].Resize(kR, 7) = rArr
End If
End Sub
[/gpecode]
---
Sheet2 là Data (dữ liệu hơn 200k dòng, 17 cột) với cột 1 là mã hàng, cột 2 là số hoá đơn.
Sheet3 là số hoá đơn đã thanh toán.
Sheet1 là báo cáo hoá đơn đã thanh toán: Lọc 6 cột từ Data và 1 cột Stt.
---
Chân thành cảm ơn!