Nhờ tìm chỗ sai code giống hàm SUMIFS tính theo điều kiện trước ngày

Liên hệ QC

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,061
Được thích
175
Nhờ các anh chị tìm chỗ sai của code
1/ Ở sheet Ton: Dựa vào sheet Nhap và Xuat em muốn
Tính tổng số lượng nhập của từng mã hàng nhập trước ngày 01/02/2019
Tính tổng số lượng xuất của từng mã hàng xuất trước ngày 01/02/2019
Mã:
Sub TonDau()
    Dim Dic As Object
    Dim DataN As Variant, DataX As Variant, kQArr As Variant
    Dim dK1 As String, dK2 As String, dK As String
    Dim i As Long, k As Long, a As Long, lrN As Long
    Set Dic = CreateObject("Scripting.Dictionary")

    '1. Xét ở sheet Nhap
    With Sheets("Nhap")
        DataN = .Range("A2", .Range("A65535").End(3)).Resize(, 4).Value
        For i = 1 To UBound(DataN)
            dK1 = DataN(i, 2)
            If DataN(i, 1) < Sheets("Ton").Range("C1").Value Then
                If Not Dic.exists(dK1) Then
                    Dic.Add dK1, DataN(i, 3)
                Else
                    Dic.Item(dK1) = Dic.Item(dK1) + DataN(i, 3)
                End If
            End If
        Next
    End With
    '2. Xét ở sheet Xuat
    With Sheets("Xuat")
        DataX = .Range("A2", .Range("A65535").End(3)).Resize(, 4).Value
        For i = 1 To UBound(DataX)
            dK2 = DataX(i, 2)
            If DataX(i, 1) < Sheets("Ton").Range("C1").Value Then
                If Not Dic.exists(dK2) Then
                    Dic.Add dK2, DataX(i, 3)
                Else
                    Dic.Item(dK2) = Dic.Item(dK2) + DataX(i, 3)
                End If
            End If
        Next
    End With
    '3. xét ở sheet Ton
    With Sheets("Ton")
        kQArr = .Range("A5", .Range("A65535").End(3)).Resize(, 3).Value
        For i = 1 To UBound(kQArr)
            dK1 = kQArr(i, 1)
            kQArr(i, 2) = Dic.Item(dK1)
            kQArr(i, 3) = Dic.Item(dK2)
        Next
        '4. GÁN KẾT QUẢ XUỐNG
        .Range("A5:C6").Clear
        .Range("A5:C6") = kQArr
    End With
End Sub
Nhưng code trên cho kết quả sai, nhờ anh /chị giúp tìm & chỉ chỗ sai

2/ Em muốn tính ở sheet KetQua như sau
Tính "tổng số lượng nhập trước ngày 01/02/2019" TRỪ "tổng số lượng xuất trước ngày 01/02/2019" (của từng mặt hàng)
lưu ý: chỉ dựa vào 2 sheet Nhap & Xuất, tính thẳng ra kết quả luôn không dựa vào sheet trung gian là sheet "Ton"
Vì cái này mảng trừ mảng nên em không biết
Các anh/chị giúp em 2 câu trên, em xin cảm ơn!
 

File đính kèm

Item đưa vào Dic ở nhập và xuất trùng nhau, tôi sửa theo code của bạn, Item đưa vào ở 1. và 2. như sau:
Mã:
dK1 = "N-" & DataN(i, 2)
Mã:
dK2 = "X-" & DataX(i, 2)
Phần 3. sửa lại như sau:
Mã:
dK1 = kQArr(i, 1)
            kQArr(i, 2) = Dic.Item("N-" & dK1)
            kQArr(i, 3) = Dic.Item("X-" & dK1)
Bổ sung phần Kết quả:
Mã:
With Sheets("Ton")
        kQArr = .Range("A5", .Range("A65535").End(3)).Resize(, 4).Value
        For i = 1 To UBound(kQArr)
            dK1 = kQArr(i, 1)
            kQArr(i, 2) = Dic.Item("N-" & dK1)
            kQArr(i, 3) = Dic.Item("X-" & dK1)
            kQArr(i, 4) = Dic.Item("N-" & dK1) - Dic.Item("X-" & dK1)
        Next
        '4. GAìN KÊìT QUAÒ XUÔìNG
        .Range("A5:D6").Clear
        .Range("A5:D6") = kQArr
    End With
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom