Bạn ơi mình giải thích như thế này nhé!
Sheet Báo cáo nhập xuất tồn (Danh sách Mặt hàng, Lô hàng, Kho hàng) ở cột tô mầu xanh là phần mình cần lọc chính trong bài này. Danh sách đó là kết quả lọc từ các Sheet Số dư đầu kỳ, sheet Dữ liệu nhập, Dữ liệu xuất. Để kết quả Danh sách Mặt hàng, Lô hàng, Kho hàng chỉ xuất hiện một lần duy nhất ko trùng nhau trong Báo cáo nhập xuất tồn.
Mong các Bạn nghĩ cách giúp đỡ. Cảm ơn các Bạn!
Đọc xong cũng hơi lơ mơ --> cũng đưa tạm 1 đoạn code VBA để bạn tham khảo, ( trong code đã cố gắng liệt kê rõ ràng,<--- hi vọng bạn sẽ tìm hiểu qua về VBA để tuỳ biến chỉnh sửa theo ý của bạn )
[GPECODE=vb]
Sub GPE()
Dim Tmparr, Item, Tmp, Arr, sArr
Dim n As Long, i As Long, j As Long, iR As Long
ReDim sArr(1 To 65536, 1 To 6)
ReDim Tmparr(1 To 10000, 1 To 6)
'---------------------------------------------------------------------------------
With Worksheets("Ton dau ky")
Tmparr = .Range("A5", .[D65536].End(3).Offset(-1)).Value
For i = 1 To UBound(Tmparr, 1)
n = n + 1
For j = 1 To 4
sArr(n, j) = Tmparr(i, j)
Next
Next
End With
With Worksheets("Du lieu nhap")
Tmparr = .Range("B5", .[E65536].End(3).Offset(-1)).Value
For i = 1 To UBound(Tmparr, 1)
n = n + 1
For j = 1 To 3
sArr(n, j) = Tmparr(i, j)
Next
sArr(n, 5) = Tmparr(i, 4)
Next
End With
With Worksheets("Du lieu xuat")
Tmparr = .Range("B5", .[E65536].End(3).Offset(-1)).Value
For i = 1 To UBound(Tmparr, 1)
n = n + 1
For j = 1 To 3
sArr(n, j) = Tmparr(i, j)
Next
sArr(n, 6) = Tmparr(i, 4)
Next
End With
'-----------------------------------------------------------------------------
ReDim Arr(1 To n, 1 To 7)
With CreateObject("Scripting.Dictionary")
For i = 1 To n
Item = CStr(sArr(i, 1) & sArr(i, 2) & sArr(i, 3))
If Len(Item) Then
Tmp = Replace(UCase(Item), " ", "")
If Not .exists(Tmp) Then
iR = iR + 1
.Add Tmp, iR
Arr(iR, 1) = iR
For j = 2 To 7
Arr(iR, j) = sArr(i, j - 1)
Next
Else
For j = 5 To 7
Arr(.Item(Tmp), j) = CDbl(sArr(i, j - 1)) + CDbl(Arr(.Item(Tmp), j))
Next
End If
End If
Next
End With
If iR Then
[A5].Resize(10000, 7).Clear
[A5].Resize(iR, 7) = Arr
End If
End Sub
[/GPECODE]