Báo cáo tháng

Liên hệ QC

quykh

Chim non
Tham gia
7/9/11
Bài viết
381
Được thích
46
Giới tính
Nữ
Nghề nghiệp
Công Nhân
Mình có file báo cáo tháng này, mong các bạn giúp đỡ.File này bạn HYEN17 đã làm cho mình, nhưng mình thấy chưa đúng(Số lượng nhập, xuất trong tháng vẫn không đúng theo sheet chi tiết)
 

File đính kèm

  • BCThang.xls
    71.5 KB · Đọc: 32
Sorry, tại vì máy mình định dạng theo DD/MM/YYYY nên nhìn vào mình tưởng là theo từng ngày. Cám ơn bạn ChanhTQ@ , SA_DQ nhe và Thầy HYen17. Mong mọi người giúp đỡ. Nhưng làm ơn làm cho chót, cho em hỏi có cách nào để tự động cập nhập số dòng khi chèn không ạ? Chứ cứ khi chèn dòng lại chỉnh sửa trong CODE.
 
Upvote 0
Cho em hỏi có cách nào để tự động cập nhập số dòng khi chèn không ạ? Chứ cứ khi chèn dòng lại chỉnh sửa trong CODE.

Báo cáo hiện tại trong file gần đây nhất là xài cho 1 năm; Để ấn định số dòng dành cho fần nhập thì chính bạn chứ không ai khác hãy cho biết trong thực tiển bại xài bao nhiêu dòng nhập trong 1 năm; từ đó ta thêm/chỉnh 1 lần duy nhất trong năm.
Ví dụ mỗi tháng bạn thường nhập 5 dòng thì chúng ta sẽ dành hẵn 120 dòng cho fần nhập.
(& khi đó chỉnh sửa trong macro cũng chỉ 1 chổ mà thôi.)

Còn một điều cần chú í trong file nữa là: Muốn nhập tồn cuối năm ta cần hiện các cột đang ẩn & chịu khó nhập tay vô cột 'E' của trang; vậy nghe.
 
Upvote 0
Nếu chỉ là định dạng cho dễ nhìn theo thói quen thì bạn cứ việc chọn cột đó

quykh đã viết:
Bạn ơi, mình quen định dạng theo ngày tháng năm (dd/mm/yyyy) rồi. Bạn có thể chỉnh lại file của bạn theo ngày tháng năm được không? Cám ơn bạn nhiều!

& định dạng theo sở thích; Tuy nhiên vẫn fải nhập vào trường này theo ngày/tháng/năm theo hệ mẽo.
Còn nếu muốn macro làm cho việc đó, thì đây, xin mời:

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [T1]) Is Nothing Then
   Dim Sh As Worksheet, Rng As Range, sRng As Range, vRg As Range, Cls As Range, Cll As Range
   Dim Rws As Long, Thg As Byte, SoNg As Byte, jJ As Byte, NX As Byte
   Dim NgD As Date, MyAdd As String
   
   Rws = [b5].CurrentRegion.Rows.Count
   [q6].Resize(Rws, 3).ClearContents
40 'Chép Tòn Dàu Tháng:'
   Thg = Target.Value
   [d5].Offset(1, Thg).Resize(Rws).Copy Destination:=[q6]
   Application.CutCopyMode = False
41 'Chép Só Lieu Cua Tháng'
   NgD = DateSerial(Year(Date), Thg, 1)
   SoNg = Day(DateSerial(Year(Date), Thg + 1, 0))
   Set Sh = ThisWorkbook.Worksheets("CSDL")
   Set Rng = Sh.Range(Sh.[a8], Sh.[a65500].End(xlUp))
   Rng.NumberFormat = "MM/dd/yyyy"
   On Error GoTo XL_Loi
   
   For jJ = 0 To SoNg
      Set sRng = Rng.Find(Format(NgD + jJ, "mm/dd/yyyy"), , xlValues, xlWhole)
      If Not sRng Is Nothing Then
         MyAdd = sRng.Address
         Do
            If sRng.Row < 50 Then NX = 16 Else NX = 17
            Set vRg = sRng.Offset(, 4).Resize(, Rws).SpecialCells(xlCellTypeConstants, 3)
            If Not vRg Is Nothing Then
               For Each Cls In vRg
                  For Each Cll In Range([b6], [b65500].End(xlUp))
                     If Cll.Value = Sh.Cells(5, Cls.Column).Value Then
                        With Cll.Offset(, 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
42 'Chép Tòn Cuói Tháng:'
   If Thg = 12 Then                    '<=|'
      Thg = 0:                         [f6].Resize(Rws, 11).ClearContents
   End If
   [e6].Offset(, Thg).Resize(Rws).Value = [t6].Resize(Rws).Value
   Rng.NumberFormat = "dd/mm/yyyy"     '<=|'
 End If
Err__:                                  Exit Sub
XL_Loi:
   Select Case Err
   Case 1004
      Resume Next
   Case Else
      MsgBox Err, , Error:             GoTo Err__
   End Select
End Sub
 
Upvote 0
Web KT
Back
Top Bottom