Em xin kính chào tất cả mọi người ạ!
Em đang làm mã tổng hợp theo nhiều điều kiện bằng VBA nhưng do học mót và tự mày mò nên không biết cách viết nó như thế nào. mong các bác sửa hoặc viết giúp đỡ em với ạ.
Để bài đặt ra là em cần tính tổng các mã hàng phát sinh theo từng tháng. khi phát sinh vào tháng nào thì ghi dữ liệu tương ứng vào cột đấy.
Mong mọi người giúp đỡ em với ạ!
Em đang làm mã tổng hợp theo nhiều điều kiện bằng VBA nhưng do học mót và tự mày mò nên không biết cách viết nó như thế nào. mong các bác sửa hoặc viết giúp đỡ em với ạ.
Để bài đặt ra là em cần tính tổng các mã hàng phát sinh theo từng tháng. khi phát sinh vào tháng nào thì ghi dữ liệu tương ứng vào cột đấy.
Mong mọi người giúp đỡ em với ạ!
Mã:
Option Explicit
Sub KH_XUAT()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim MaxCls, Arr, ArrDK, Tk, KQ(), Ch(1 To 3), Tn, Dn, ID, i, j, n
Application.ScreenUpdating = False
Arr = Sheet1.Range("A4:J" & Sheet1.[B65536].End(3).Row) 'ma tai khoan
Tn = Sheet16.[I2]: Dn = Sheet16.[I3] 'tu ngay - den ngay
'Dua bang MaTK va so du vao mang
For i = 1 To UBound(Arr, 1) 'tu dòng 1 den dong cuoi cung httk
If Not Dic.Exists(Arr(i, 2)) And Left(Arr(i, 2), 1) <> 0 Then
ID = ID + 1
Dic.Add IIf(IsNumeric(Arr(i, 2)), CStr(Arr(i, 2)), Trim(Arr(i, 2))), ID
ReDim Preserve KQ(1 To 22, 1 To ID)
KQ(1, ID) = Arr(i, 2)
KQ(2, ID) = Arr(i, 3)
KQ(3, ID) = Arr(i, 4)
KQ(4, ID) = Arr(i, 5)
KQ(5, ID) = Arr(i, 6)
KQ(6, ID) = Arr(i, 7)
KQ(7, ID) = Arr(i, 9)
End If
Next
Arr = Sheet5.Range("A5:T" & Sheet5.[B65536].End(3).Row)
ArrDK = Sheet16.Range("I2:T" & Sheet16.[I3].End(3).Row)
For i = 1 To UBound(Arr, 1)
If Arr(i, 2) >= Tn And Arr(i, 2) <= Dn And Arr(i, 2) <> "" Then
ID = Dic.Item(Arr(i, 10))
KQ(8, ID) = KQ(8, ID) + Arr(i, 17)
End If
On Error Resume Next
Next
j = 0
For i = 1 To UBound(KQ, 2)
j = j + 1
For n = 1 To 22
KQ(n, j) = KQ(n, i)
Next
Next
With Sheet16
.Rows("6:1000").EntireRow.Hidden = False
.Range("B6:W1000").ClearContents
End With
Sheet16.[B6:W6].Resize(j) = WorksheetFunction.Transpose(KQ)
With Sheet16.Range("B6:B999")
.SpecialCells(4).EntireRow.Hidden = True
End With
End Sub