Kết quả trả về mảng không đủ dữ liệu

Liên hệ QC

vmhieu.cdcs

Thành viên mới
Tham gia
21/5/09
Bài viết
26
Được thích
2
Xin chào các anh chị,
Mình thiết lập so sánh 2 mảng để lấy giá trị :
Mảng nguồn là mảng arr2 (963 records)
Mảng so sánh là mảng arr6 (788 records)
Mình muốn so sánh giá trị từ mảng arr2 với mảng arr6, nếu có giá trị thì trả về mảng kết quả và điền lại vào mảng arr2.

Vấn đề mình đang gặp phải là mảng kết quả trả về trên mảng arr2 chỉ chạy đúng số dòng của mảng so sánh arr6: 788 dòng, còn các dòng bên dưới không có giá trị.

Nhờ các anh, chị xem giúp code mình lỗi chỗ nào,
Xin cảm ơn anh, chị rất nhiều ạ!!!

Sub vssid()

Dim LR2, LR6 As Long
Dim arr6(), arr2(), kq_duyet(), kq_dangnhap(), kq_tinhtrang()
Dim i, j As Long
Dim x, y, z As Long
LR2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
LR6 = Sheet6.Range("D" & Rows.Count).End(xlUp).Row
arr6 = Sheet6.Range("D3:Q" & LR6).Value
arr2 = Sheet2.Range("D2:D" & LR2).Value
ReDim kq_duyet(1 To LR2, 1 To 1)
ReDim kq_dangnhap(1 To LR2, 1 To 1)
ReDim kq_tinhtrang(1 To LR2, 1 To 1)
For i = 1 To UBound(arr2)
For j = 1 To UBound(arr6)
If arr2(i, 1) = arr6(j, 1) Then
x = x + 1
y = y + 1
z = z + 1
kq_duyet(x, 1) = arr6(j, 9)
kq_dangnhap(y, 1) = arr6(j, 13)
kq_tinhtrang(z, 1) = arr6(j, 14)
End If
Next
Next
Sheet2.Range("X2").Resize(UBound(arr2)).Value = kq_duyet
Sheet2.Range("Y2").Resize(UBound(arr2)).Value = kq_dangnhap
Sheet2.Range("Z2").Resize(UBound(arr2)).Value = kq_tinhtrang
End Sub
1637379479985.png
 

File đính kèm

  • Tong hop so chi Tangmoi - Copy.xlsb
    300.1 KB · Đọc: 12
Xin chào các anh chị,
Mình thiết lập so sánh 2 mảng để lấy giá trị :
Mảng nguồn là mảng arr2 (963 records)
Mảng so sánh là mảng arr6 (788 records)
Mình muốn so sánh giá trị từ mảng arr2 với mảng arr6, nếu có giá trị thì trả về mảng kết quả và điền lại vào mảng arr2.
Mệnh đề "nếu có giá trị" này phải hiểu như thế nào đây ta; Trong khi ở chương trình thì trị trong 2 cột khảo sát phải bằng nhau mới lấy dữ liệu dòng đó chép vô mảng mảng kết quả.
;
Góp ý thêm: Bạn chỉ cần khai báo 1 mảng kết quả thôi, mảng này là 3 cột & số hàng (dòng) chí ít bằng với số dòng ít hơn trong các tham biến lR2 & lR6
Dù bạn vẫn cố giữ 3 biến màng thì X, Y & Z chỉ cần 1 mà thôi.
 
Upvote 0
Vấn đề mình đang gặp phải là mảng kết quả trả về trên mảng arr2 chỉ chạy đúng số dòng của mảng so sánh arr6: 788 dòng, còn các dòng bên dưới không có giá trị.

Nhờ các anh, chị xem giúp code mình lỗi chỗ nào,
Kết quả chạy Sub của bạn đã chính xác chưa?
Bạn sửa lại như vầy và kiểm tra kết quả, so sánh lại với kết quả của bạn xem cái nào đúng.
PHP:
Sub vssid()
Dim arr6(), arr2(), Kq()
Dim i As Long, j As Long, LR2 As Long, LR6 As Long
    LR2 = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
    LR6 = Sheet6.Range("D" & Rows.Count).End(xlUp).Row
  arr6 = Sheet6.Range("D3:Q" & LR6).Value
  arr2 = Sheet2.Range("D2:D" & LR2).Value
ReDim Kq(1 To LR2, 1 To 3)
    For i = 1 To UBound(arr2)
        For j = 1 To UBound(arr6)
            If arr2(i, 1) = arr6(j, 1) Then
                Kq(i, 1) = arr6(j, 9)
                Kq(i, 2) = arr6(j, 13)
                Kq(i, 3) = arr6(j, 14)
                Exit For
            End If
        Next j
    Next i
    Sheet2.Range("X2").Resize(UBound(arr2), 3).Value = Kq
End Sub
 
Upvote 0
Web KT
Back
Top Bottom