CHẠY BÁO CÁO TỰ ĐỘNG BẰNG CODE VBA

Liên hệ QC

nai_con

Thành viên chính thức
Tham gia
20/9/09
Bài viết
66
Được thích
9
Giới tính
Nam
Kính gửi Quý Anh/Chị Thầy/Cô.
Em có file theo dõi đơn hàng hàng ngày do nhân viên theo dõi, tuy nhiên mỗi lần trích báo cáo rất tốn thời gian và có sai sót. Em đính kèm file dữ liệu demo đi kèm với yêu cầu chi tiết cho mỗi bảng báo cáo. Kính mong Quý Anh/Chị, Thầy/Cô giúp đỡ để đáp ứng nhu cầu công việc.
Em chân thành cảm ơn.
Trân trọng!
 

File đính kèm

  • Code Chay Bao Cao.xlsx
    13.2 KB · Đọc: 80
Còn đây là macro tạo báo cáo trong toàn tháng. Các số liệu mỗi tuần phân cách nhau 1 dòng trắng (Xin xem hình đính kèm)
PHP:
Sub BaoCaoTheoTuan()
Dim Rng As Range, sRng As Range, Cls As Range, Sh As Worksheet
Dim Rws As Long, Hg As Integer, W As Integer, Dm As Integer, Them As Integer
Dim MyFormat As String, MyAdd As String
 
With Sheets("TheoDoi")
    Rws = .[B3].CurrentRegion.Rows.Count
    Set Rng = .[F3].Resize(Rws)
    MyFormat = Rng.NumberFormat
    Rng.NumberFormat = "MM/DD/yyyy"
End With
Set Sh = ThisWorkbook.Worksheets("GPE")
With Sheets("BCao")
    .[A4].Resize(6666, 6).ClearContents:                         Dg = 3
    For Each Cls In Sh.Range("B4:H9")
        If Month(Cls.Value) = Sh.[F2].Value Then
            Them = Cls.Row - 4
            Set sRng = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
            If Not sRng Is Nothing Then
                MyAdd = sRng.Address
                Do
                    W = W + 1
                    .Cells(Dg + Them + W, "A").Value = W
                    .Cells(Dg + Them + W, "B").Value = sRng.Value
                    .Cells(Dg + Them + W, "B").Interior.ColorIndex = 34 + Them
                    For Dm = -4 To -1 Step 1
                        .Cells(Dg + Them + W, Dm + 7).Value = sRng.Offset(, Dm).Value
                    Next Dm
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            End If
        End If
    Next Cls
End With
End Sub

Lưu ý: Bạn lấy 1 trang tính trắng, gán cho nó cái tện 'BCao', & sau đó cho macro chạy là được. Chúc vui!
 

File đính kèm

  • BCao.JPG
    BCao.JPG
    68.2 KB · Đọc: 77
Upvote 0
Còn đây là macro tạo báo cáo trong toàn tháng. Các số liệu mỗi tuần phân cách nhau 1 dòng trắng (Xin xem hình đính kèm)
PHP:
Sub BaoCaoTheoTuan()
Dim Rng As Range, sRng As Range, Cls As Range, Sh As Worksheet
Dim Rws As Long, Hg As Integer, W As Integer, Dm As Integer, Them As Integer
Dim MyFormat As String, MyAdd As String

With Sheets("TheoDoi")
    Rws = .[B3].CurrentRegion.Rows.Count
    Set Rng = .[F3].Resize(Rws)
    MyFormat = Rng.NumberFormat
    Rng.NumberFormat = "MM/DD/yyyy"
End With
Set Sh = ThisWorkbook.Worksheets("GPE")
With Sheets("BCao")
    .[A4].Resize(6666, 6).ClearContents:                         Dg = 3
    For Each Cls In Sh.Range("B4:H9")
        If Month(Cls.Value) = Sh.[F2].Value Then
            Them = Cls.Row - 4
            Set sRng = Rng.Find(Format(Cls.Value, "MM/DD/yyyy"), , xlValues, xlWhole)
            If Not sRng Is Nothing Then
                MyAdd = sRng.Address
                Do
                    W = W + 1
                    .Cells(Dg + Them + W, "A").Value = W
                    .Cells(Dg + Them + W, "B").Value = sRng.Value
                    .Cells(Dg + Them + W, "B").Interior.ColorIndex = 34 + Them
                    For Dm = -4 To -1 Step 1
                        .Cells(Dg + Them + W, Dm + 7).Value = sRng.Offset(, Dm).Value
                    Next Dm
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            End If
        End If
    Next Cls
End With
End Sub

Lưu ý: Bạn lấy 1 trang tính trắng, gán cho nó cái tện 'BCao', & sau đó cho macro chạy là được. Chúc vui!
Em xin chân thành cảm ơn Thầy. 3 hôm rồi Em có chuyến công tác xa nên chưa kịp Check thông tin. Để Em áp dụng có vướng gì nữa nhờ Thầy chỉ điểm thêm.
Chân thành cảm ơn Thầy đã giúp đỡ cho Em.
Em cảm ơn.
 
Upvote 0
Thưa thầy "SA_DQ " báo cáo của em gồm 4 phần nhưng file thầy gửi Em thấy mới báo cáo được 2 mục trong 4 mục nội dung yêu cầu thôi Thầy. Không biết hoàn chỉnh báo cáo đầy đủ nội dung nhanh thông Thầy xem giúp em với. Về VBA em cũng chưa sắp được thời gian chuyên tâm nghiên cứu nhiều.
Chân thành cảm ơn Thầy.
 
Upvote 0
Để thực hiện đủ 4 mục như bạn iêu cầu, bạn cần cho biết bên trang 'TheoDoi' thường tối đa trong tháng có bao nhiêu dòng dữ liệu;
Trong 4 phần đó số dòng dữ liệu thường phân bố như thế nào? Nghĩa là mo63u mục thường có cực đại bao nhiêu dòng?
 
Upvote 0
Để thực hiện đủ 4 mục như bạn iêu cầu, bạn cần cho biết bên trang 'TheoDoi' thường tối đa trong tháng có bao nhiêu dòng dữ liệu;
Trong 4 phần đó số dòng dữ liệu thường phân bố như thế nào? Nghĩa là mo63u mục thường có cực đại bao nhiêu dòng?
Thưa Thầy.
File Em theo dõi từng tháng 1. Cực đại mỗi phần là 200 line tối đa 1 tháng 800 - 1000 dòng.
Kính mong thầy giúp đỡ.
Trân trọng!
 
Upvote 0
:D :D :D Bạn thao tác thử xem sao :D :D :D
 

File đính kèm

  • GPE.rar
    26.5 KB · Đọc: 83
Upvote 0
Web KT
Back
Top Bottom