Nhờ giúp code VBA lọc chi tiết và tổng hợp khoản mục chi phí từ ngày đến ngày

Liên hệ QC

hitlecp

Thành viên hoạt động
Tham gia
17/5/10
Bài viết
151
Được thích
14
Chào anh/chị,
Nhờ anh/chị giúp em VBA chạy dữ liệu cho kết quả ở 2 sheet là: "chi tiết và tổng hợp" các khoản mục chi phí trong năm khi nhập từ ngày đến ngày số liệu nhảy theo, vì dữ liệu trong năm rất nhiều chạy công thức thì file chạy chậm, nên nhờ anh/chị giúp em code VBA với ạ (em có đính kèm file)
Dự liệu lấy từ các sheet chi phí và khi có phát sinh thêm chi phí mới em insert thêm sheet thì dữ liệu lấy cũng hiểu được luôn ạ
Nhờ anh/chị giúp em với ạ. Em cám ơn!
 

File đính kèm

  • Tong Hop Chi Phi.xlsx
    18.8 KB · Đọc: 6
Chào anh/chị,
Nhờ anh/chị giúp em VBA chạy dữ liệu cho kết quả ở 2 sheet là: "chi tiết và tổng hợp" các khoản mục chi phí trong năm khi nhập từ ngày đến ngày số liệu nhảy theo, vì dữ liệu trong năm rất nhiều chạy công thức thì file chạy chậm, nên nhờ anh/chị giúp em code VBA với ạ (em có đính kèm file)
Dự liệu lấy từ các sheet chi phí và khi có phát sinh thêm chi phí mới em insert thêm sheet thì dữ liệu lấy cũng hiểu được luôn ạ
Nhờ anh/chị giúp em với ạ. Em cám ơn!
Bạn phải có dữ liệu nhiều một chút, chứ có sheet chỉ 1, 2 dòng, có sheet trống rỗng, làm sao thử kết quả, nhất là từ ngày đến ngày.
Kết quả mẫu trong sheet ChiTiet, chọn mục Bao ve sao lại có 2 dòng kết quả từ đâu ra?
Chỉ khi yêu cầu và điều kiện rõ ràng, dữ liệu đầy đủ thì mới kiểm tra được code hoạt động có lỗi không, từ đó mà bẫy lỗi.
 
Upvote 0
Vâng, em gửi lại file ạ. Nhờ anh chỉ giúp em với ạ. Em cám ơn
Bạn phải có dữ liệu nhiều một chút, chứ có sheet chỉ 1, 2 dòng, có sheet trống rỗng, làm sao thử kết quả, nhất là từ ngày đến ngày.
Kết quả mẫu trong sheet ChiTiet, chọn mục Bao ve sao lại có 2 dòng kết quả từ đâu ra?
Chỉ khi yêu cầu và điều kiện rõ ràng, dữ liệu đầy đủ thì mới kiểm tra được code hoạt động có lỗi không, từ đó mà bẫy lỗi.
 

File đính kèm

  • Tong Hop Chi Phi.xlsx
    18.8 KB · Đọc: 3
Upvote 0
Vâng, em gửi lại file ạ. Nhờ anh chỉ giúp em với ạ. Em cám ơn
Tôi thấy tốt nhất là tất cả các sheet Sua Chua, Bao ve, ... dồn lại trong 1 sheet (Data), thêm 1 cột ghi phân loại là dòng nào thuộc loại nào (Trong các mục Sua Chua, Bao ve, ...) Sheets Data này có thể ghi nhận dữ liệu của 1 năm hay nhiều năm.
Như vậy file sẽ gọn và chuẩn hơn muốn làm gì cũng dễ.
Sheet Tonghop hay Chitiet muốn lọc từ ngày nào đến ngày nào tùy ý, có thể là vài ngày, vài tháng, một năm...
Nếu đồng ý thì bạn gộp dữ liệu lại, gởi file lên, sẽ có người viết code cho bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi thấy tốt nhất là tất cả các sheet Sua Chua, Bao ve, ... dồn lại trong 1 sheet (Data), thêm 1 cột ghi phân loại là dòng nào thuộc loại nào (Trong các mục Sua Chua, Bao ve, ...) Sheets Data này có thể ghi nhận dữ liệu của 1 năm hay nhiều năm.
Như vậy file sẽ gọn và chuẩn hơn muốn làm gì cũng dễ.
Sheet Tonghop hay Chitiet muốn lọc từ ngày nào đến ngày nào tùy ý, có thể là vài ngày, vài tháng, một năm...
Nếu đồng ý thì bạn gộp dữ liệu lại, gởi file lên, sẽ có người viết code cho bạn.
Vâng, em đã đưa dữ liệu vào 1 sheet Data rồi, nhìn như vậy dữ liệu càng gọn hơn ạ. Nhờ anh giúp em code ở 2 sheet: TongHop và ChiTiet ạ. Em cám ơn
 

File đính kèm

  • Tong Hop Chi Phi.xlsx
    18.8 KB · Đọc: 4
Upvote 0
Theo tôi bạn lập 1 danh mục chi phí như thế này
1611217429118.png
Còn tất cả các chi phí đều có cùng cấu trúc nên dồn vào 1 sheet ChiTiet như thế này: (Lưu ý cột Mã chi phí )
1611217447826.png

Đảm bảo dễ quản lý, lọc lựa, tổng hợp.

Còn làm như bạn là khi chưa có Excel (tức làm bằng tay trên giấy)
 
Upvote 0
Theo tôi bạn lập 1 danh mục chi phí như thế này
View attachment 253301
Còn tất cả các chi phí đều có cùng cấu trúc nên dồn vào 1 sheet ChiTiet như thế này: (Lưu ý cột Mã chi phí )
View attachment 253303

Đảm bảo dễ quản lý, lọc lựa, tổng hợp.

Còn làm như bạn là khi chưa có Excel (tức làm bằng tay trên giấy)
Vâng, em đã cho vào 1 sheet Data rồi và thêm cột phân loại chi phí rồi anh ạ
 

File đính kèm

  • Tong Hop Chi Phi.xlsx
    18.8 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Gửi lại bạn tham khảo
 

File đính kèm

  • Tong Hop Chi Phi.xlsm
    34.6 KB · Đọc: 13
Upvote 0
Vâng, em đã đưa dữ liệu vào 1 sheet Data rồi, nhìn như vậy dữ liệu càng gọn hơn ạ. Nhờ anh giúp em code ở 2 sheet: TongHop và ChiTiet ạ. Em cám ơn
Bạn xem File, chưa biết sheet TongHop bạn muốn sao, tạm thời nhập thủ công vào cột B nhé.
 

File đính kèm

  • Tong Hop Chi Phi.xlsb
    30.1 KB · Đọc: 18
Upvote 0

File đính kèm

  • Tong Hop Chi Phi.xlsx
    37 KB · Đọc: 12
Upvote 0
Chưa hay lắm đâu Bạn vì Thầy chưa ra tay hết, hay hơn nữa phải bỏ thao tác bấm nút đi ,nghĩa khi nhập các điều kiện lọc xong chỉ cần Enter là ra số luôn ấy không phải bấm nút :p
Không nên lạm dụng vụ enter chạy. Code cho sự kiện Change bao giờ cũng bị chạy bất cứ khi nào, chẳng qua là do đk nên end sub mà thôi. Ngoài ra khi có 3 ô điều kiện, trong đó 2 ô ngày thì phải bắt lỗi ngày kết thúc > ngày bắt đầu, người dùng gõ từa lưa vô không theo thứ tự là code bắt lỗi chạy loạn lên, chớp giật đùng đùng
 
Upvote 0
Không nên lạm dụng vụ enter chạy. Code cho sự kiện Change bao giờ cũng bị chạy bất cứ khi nào, chẳng qua là do đk nên end sub mà thôi. Ngoài ra khi có 3 ô điều kiện, trong đó 2 ô ngày thì phải bắt lỗi ngày kết thúc > ngày bắt đầu, người dùng gõ từa lưa vô không theo thứ tự là code bắt lỗi chạy loạn lên, chớp giật đùng đùng
Chú Mỹ mô tả mà con thấy hoang mang quá, code của Thầy @Ba Tê con không có ý kiến gì thêm nên không có ý thay đổi ạ.
Con làm thử như sau chú Mỹ góp ý thêm cho con ạ, thêm code cho module ThisWorkbook:

Mã:
Option Explicit

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
    
    On Error GoTo EndSub
    
    If Target.CountLarge > 1 Then Exit Sub
    
    Dim fDate As Long, eDate As Long
    If sh.Name = "ChiTiet" Then
        
        If Not Intersect(sh.Range("C3:D5"), Target) Is Nothing Then
            Application.EnableEvents = False
            fDate = sh.Range("C3").Value:    eDate = sh.Range("C4").Value
            If Not IsDate(fDate) And IsDate(eDate) Or fDate > eDate Then
                MsgBox "Say ra van de ve dieu kien ngay thang nam", vbCritical
                GoTo EndSub
            End If
            Call sChiTiet(sh)
        End If
        
    ElseIf sh.Name = "TongHop" Then
        If Not Intersect(sh.Range("C3:C4"), Target) Is Nothing Then
            Application.EnableEvents = False
            fDate = sh.Range("C3").Value:    eDate = sh.Range("C4").Value
            If Not IsDate(fDate) And IsDate(eDate) Or fDate > eDate Then
                MsgBox "Say ra van de ve dieu kien ngay thang nam", vbCritical
                GoTo EndSub
            End If
            Call sTongHop(sh)
        End If
        
    End If

EndSub:
    Application.EnableEvents = True
    If Err.Number Then MsgBox Err.Number & "-" & Err.Description, vbCritical, "Error"
    
End Sub
 

File đính kèm

  • Tong Hop Chi Phi.xlsb
    36.4 KB · Đọc: 12
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom