Bạn có thể chỉ mình làm Report đó đi?
Option Explicit
Dim Sh As Worksheet, Rng As Range, sRng As Range, vRg As Range
Dim Col As Byte
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Not Intersect(Target, [L2]) Is Nothing Then
BCThg Target.Value
End If
[B]End Sub[/B]
Sub BCThg(Thg As Byte)
Dim DatD As Date, DatC As Date
Dim vRg As Range, Cls As Range, Cll As Range
Dim SoNg As Integer, Jj As Integer, Col As Integer, NX As Integer
Dim MyAdd As String
Set Sh = ThisWorkbook.Worksheets("Report")
Col = [iu5].End(xlToLeft).Column
Sh.[E6].Resize(9 * Col, 3).ClearContents
Range("E8").Resize(, Col).Copy
1 'Chép Tòn Nam Truóc'
Sh.Range("E6").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Set Rng = Range([a8], [A9999].End(xlUp))
Rng.NumberFormat = "mm/dd/yyyy"
If Thg > 1 Then
2 'Chép Tòn Các Tháng Truóc'
DatD = DateSerial(Year(Date), 1, 1)
DatC = DateSerial(Year(Date), Thg, 1)
SoNg = DatC - DatD
For Jj = 0 To SoNg - 1
Set sRng = Rng.Find(Format(DatD + Jj, "mm/dd/yyyy"), , xlValues, xlWhole)
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
If sRng.Row < 22 Then NX = 1 Else NX = -1
Set vRg = sRng.Offset(, 4).Resize(, Col).SpecialCells(xlCellTypeConstants, 3)
If Not vRg Is Nothing Then
For Each Cls In vRg
For Each Cll In Sh.Range(Sh.[b6], Sh.[b65500].End(xlUp))
If Cll.Value = Cells(5, Cls.Column).Value Then
With Cll.Offset(, 3)
.Value = .Value + NX * Cls.Value
End With
End If
Next Cll
Next Cls
End If
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next Jj
End If
3 'Chép Só Lieu Cua Tháng'
DatD = IIf(Thg = 1, DateSerial(Year(Date), 1, 1), DatC)
DatC = IIf(Thg = 1, DateSerial(Year(Date), 2, 1), DateSerial(Year(Date), Thg + 1, 1))
SoNg = DatC - DatD
For Jj = 0 To SoNg - 1
Set sRng = Rng.Find(Format(DatD + Jj, "mm/dd/yyyy"))
If Not sRng Is Nothing Then
MyAdd = sRng.Address
Do
If sRng.Row < 22 Then NX = 1 Else NX = 2
Set vRg = sRng.Offset(, 4).Resize(, Col).SpecialCells(xlCellTypeConstants, 3)
If Not vRg Is Nothing Then
For Each Cls In vRg
For Each Cll In Sh.Range(Sh.[b6], Sh.[b65500].End(xlUp))
If Cll.Value = Cells(5, Cls.Column).Value Then
With Cll.Offset(, 3 + NX)
.Value = .Value + Cls.Value
End With
End If
Next Cll
Next Cls
End If
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next Jj
Sh.Select
End Sub
Bạn có thể làm cụ thể cho mình không? Kiến thức Excel mình dở lắm. Cám ơn bạn nhiềuBạn chèn thêm điều kiện: =IF(ĐVT="Kgs",round("công thức đang tính",2),"công thức đang tính").
Mình đọc rồi, nhưng chả hiểu gì mấy cái ngôn ngữ lập trình này. Bạn có cách nào chỉ cho mình hiểu về ngôn ngữ này không? Cám ơn bạn đã chỉ giáo cho mình!
Mình cũng đã mua cuốn VBA của thầy Hướng rồi, nhưng hơi chậm tiêu nên . . . đường còn dài mút mút chỉ luôn.
Bạn có thể làm cho mình một chương trình quản lý kho được không ? (quản lý số lượng nhập, xuất, tồn, in phiếu xuất, nhập chi tiết xuất nhập của hàng hóa).
Bạn xem lại file nhé, nhớ tên các sheet "Thang-" đừng thay đổi vì nó lấy số tháng từ tên sheet.Bạn Leonguyenz ơi, bạn làm lại dùm mình nhe, vì mình thay tiêu đề là " bào cáo tổng hợp tháng 1 năm 2011". Mình thấy có một số file người ta tạo ra các bảng con, khi bầm vào bảng con đó thì nó hiện ra một sheet để nhập liệu, bạn có biết cách làm bạn lám dum mình nhe. File đính kèm
Ẩn/hiện thanh Formula (Công thức) trên Excel 2007: View => Formula Bar, còn trên Excel khác thì mình không nhớ nữa. Xem thêm Excel Options của bác BNTT: http://www.giaiphapexcel.com/diendan/threads/93068.Hướng-dẫn-sử-dụng-Options-của-Excel-2007Cám ơn bạn nhe, nhưng sao mình không thấy thanh công thức đâu dzậy? Bạn có thể chỉ cho mình thấy công thức để học hỏi được không? Cám ơn !
File của bạn nhờ cao thủ VBA thôi.Mình có file trong đó có nhiều sheet chi tiết, thì làm báo cáo theo tháng làm sao hả bạn Leonguyenz?
Nhưng nó dò lâu quá! Nếu làm luôn 12 tháng chắc lâu dữ!




Nhưng kho của mình thì phải lập thẻ kho chi tiết các mặt hàng và phải theo dõi theo ngày, tháng, năm. Mình cũng tham khảo nhiều file NXT rồi, nhung chưa thấy cái nào phù hợp cả.




Mình thì không fải trong nghề, nhưng đoan chắc là cần biến cải lại CSDL của bạn để nó thành 3 cụm như sau:
C1: Chứa dữ liệu thô ta nhập vô hay xuất ra
C2: Form thẻ kho, khi cần lập thể kho mặt hàng nào thì ới nó, macro sẽ tìm số liệu của mặt hàng đó đem lên form cho bạn.
C3: Báo cáo xuất nhập tồn định kỳ (ngày, tháng, . . . hay năm)
Mô hình này, các công thức trong excel khó mà đảm đương nổi với trên vài trăm mặt hàng. (Lúc đó ta hãy mạnh dạn từ bỏ thói quen nhìn nhận vấn đề sẽ được các hàm giải quyết ra sao; Bước sang cách nhìn mới với sự hỗ trợ từ VBA; & ban đầu thì bạn fải nhờ đến sự trợ giúp từ cộng đồng này rồi!) Bạn thấy đó, với CSDL hiện thời của bạn, các nhà siêu công thức đã & đang chịu thua rồi còn gì!
(ũng chỉ mong bạn tham khảo thêm cách mới mà thôi!
Hoàn toàn có thể và đơn giản.Nên có cách nhìn khác đi một chút thì có thể cải biến được đó bạn à.
Mình chỉ muốn nhập liệu ở sheet thẻ kho nó sẽ tự động báo cáo theo tháng. Bạn cố gắng giúp mình nhé