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?