Option Explicit
Sub test()
Dim i&, j&, lr&, nam&, kho As String, thang, CL, arr(1 To 12, 1 To 4)
If ActiveSheet.Name = "Data" Then
MsgBox "Chon sheet kho"
Exit Sub
End If
kho = Range("B2").Value
nam = Range("B3").Value
thang = Range("B5:B16").Value
CL = Range("C4:F4").Value
With Worksheets("Data")
lr = .Cells(Rows.Count, "M").End(xlUp).Row
For i = 1 To 12
For j = 1 To 4
arr(i, j) = WorksheetFunction.CountIfs(.Range("M6:M" & lr), kho, .Range("J6:J" & lr), nam, _
.Range("I6:I" & lr), thang(i, 1), .Range("G6:G" & lr), CL(1, j) & "*")
Next
Next
End With
Range("C5").Resize(i, j).Value = arr
Range("C17:F17").FormulaR1C1 = "=sum(R[-12]C:R[-1]C)"
Range("G5:G17").FormulaR1C1 = "=sum(RC[-4]:RC[-1])"
End Sub
Cảm ơn anh đã giúp, em sẽ làm theo hướng này của anh.Làm đại trong khi chờ các cao thủ ra tay:
PHP:Option Explicit Sub test() Dim i&, j&, lr&, nam&, kho As String, thang, CL, arr(1 To 12, 1 To 4) If ActiveSheet.Name = "Data" Then MsgBox "Chon sheet kho" Exit Sub End If kho = Range("B2").Value nam = Range("B3").Value thang = Range("B5:B16").Value CL = Range("C4:F4").Value With Worksheets("Data") lr = .Cells(Rows.Count, "M").End(xlUp).Row For i = 1 To 12 For j = 1 To 4 arr(i, j) = WorksheetFunction.CountIfs(.Range("M6:M" & lr), kho, .Range("J6:J" & lr), nam, _ .Range("I6:I" & lr), thang(i, 1), .Range("G6:G" & lr), CL(1, j) & "*") Next Next End With Range("C5").Resize(i, j).Value = arr Range("C17:F17").FormulaR1C1 = "=sum(R[-12]C:R[-1]C)" Range("G5:G17").FormulaR1C1 = "=sum(RC[-4]:RC[-1])" End Sub
Dupplicate sheet Kho 1 và sửa thành kho 2 thôi.Cảm ơn anh đã giúp, em sẽ làm theo hướng này của anh.
Ý tưởng của em lúc đầu muốn xuất luôn có bao nhiêu kho là sinh ra luôn bấy nhiêu sheet "Kho 1, Kho 2, Kho..." chỉ chọn mỗi năm cần báo cáo thôi.
Một lần nữa cảm ơn anh đã giúp đỡ!