Nguyen thi huyen trang
Nguyen thi huyen trang
Thảo luận 16 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 275 lượt xem

em có file danh mục khách hàng như vậy Em muốn hiện thị kết quả ở vùng

Thưa thầy em có file danh mục khách hàng như vậy. Em muốn hiện thị kết quả ở vùng bôi màu vàng trong file.

Vì bên e một khách hàng có thể có nhiều công trình nhưng cũng có khách hàng chỉ có 1 công trình.

Em muốn thêm dòng ở những khách hàng có nhiều công trình và tính tổng nợ như ví dụ bôi màu vàng. Sau đó lên báo cáo tổng cho nhóm Khách hàng nhóm số 1

Có cách nào dùng Vba để thêm dòng tự động vào nhóm Khách hàng có nhiều công trình rồi tính tổng các công trình của họ không.

Rất mong thầy hướng dẫn chi tiết cho em.

Cám ơn thầy ạ

FILE DMKH

Thảo luận 16 câu trả lời
Lượt xem 275 lượt xem
Vỗ tay vỗ tay
Nguyen thi huyen trang 08:08 - Aug 11, 2021

Chào bạn bạn vui lòng gửi lại File giúp gitiho nhé.

Vỗ tay vỗ tay
Nguyen thi huyen trang 14:08 - Aug 11, 2021
Vỗ tay vỗ tay
Nguyen thi huyen trang 15:08 - Aug 11, 2021

Bạn nên tạo 1 báo cáo tổng hợp, trong báo cáo đó sẽ thể hiện các khách hàng, mỗi khách hàng 1 dòng => dùng công thức SUMIFS để tính tổng phát sinh cho từng khách hàng.

Ko nên tạo dòng tổng cộng ngay trong bảng danh mục vì như thế dễ bị thiếu sót và nhầm lẫn (khi thực hiện các thao tác sắp xếp trong bảng danh mục thì dòng tổng cộng sẽ bị xáo trộn và phải đặt lại rất mất công.

Vỗ tay vỗ tay
Nguyen thi huyen trang 18:08 - Aug 11, 2021

Thầy nói đúng e cũng định lấy luôn danh sách khách hàng để làm báo cáo và thực tế là khi phát sinh thêm công trình của 1 khách hàng nào đó mà quên ko chèn thêm dòng tổng cộng vào trc khách hàng đó là số tổng theo nhóm 1 có thể đúng nhưng từng khách hàng thì lại chưa chuẩn.

Nhưng thầy có thể thiết kế cho e mẫu báo cáo như thế nào để liên kết đc với bảng danh mục khách hàng mà khi update bảng danh mục tự khắc sẽ nhảy khách hàng vào bảng báo cáo ko ạ mà vẫn thể hiện đc nhóm Khách hàng cấp 1 và khách hàng cấp 2,3...

E cám ơn thầy ạ

Vỗ tay vỗ tay
Nguyen thi huyen trang 10:08 - Aug 12, 2021

Ở đây mình mới thấy danh sách chứ chưa thấy phần dữ liệu phát sinh nên chưa rõ báo cáo sẽ cần tính như thế nào.

Việc sắp xếp khách hàng theo nhóm thực ra thế này: Dựa trên việc tạo Nhóm khách bạn thực hiện 1 đoạn code Sắp xếp lại bảng theo Nhóm (nên đặt mã nhóm có ký tự text như A1, A2, A1.1... thì khi sắp xếp sẽ chính xác hơn). Code sắp xếp có thể record macro được => thao tác sắp xếp nên làm tự động để tránh dữ liệu bị đặt vị trí lộn xộn không đúng nhóm.

Về phương pháp làm báo cáo thì mình nghĩ bạn có thể dùng pivot table sẽ khá hiệu quả trong tình huống này, không cần qua VBA. Pivot table đáp ứng đủ các tiêu chuẩn làm báo cáo mà bạn muốn mà ko cần lập trình code. Còn để làm báo cáo thủ công bằng công thức thì cần biết thêm dữ liệu phát sinh thế nào mới đưa ra công thức phù hợp được.

Vỗ tay vỗ tay
Nguyen thi huyen trang 22:08 - Aug 14, 2021

E không hiểu hàm sort của em sai chỗ nào mà em test không ra thầy ạ. Vẫn file DMKH đó. Đây là đoạn code của em



Vỗ tay vỗ tay
Nguyen thi huyen trang 22:08 - Aug 14, 2021
Nguyen thi huyen trang 02:08 - Aug 15, 2021
Nguyen thi huyen trang 23:08 - Aug 15, 2021

Chào bạn bạn gửi file giúp gitiho nhé, code không thể dubug bằng mắt được đâu bạn

Vỗ tay vỗ tay
Nguyen thi huyen trang 22:08 - Aug 26, 2021
Vỗ tay vỗ tay
Nguyen thi huyen trang 22:08 - Aug 26, 2021

Thầy giúp em định dạng và gán giá trị dòng cuối vào sheet IN giống như mẫu trong sheet form_kq nhé. Em cảm ơn thầy ạ

Vỗ tay vỗ tay
Nguyen thi huyen trang 14:08 - Aug 27, 2021

Bạn tham khảo code mẫu dưới đây nhé:

Sub test_adfilter()
    'Xoa du lieu cu
    Range("A14:G500").Clear
    'Loc du lieu
        Dim ws, ws_data As Worksheet
        Set ws = ThisWorkbook.Sheets("IN")
        Set ws_data = ThisWorkbook.Sheets("NHAPTONGHOP")
        Dim rgn, rgn_DK, rgn_KQ As Range
        Set rgn = ws_data.Range("A8:I" & DongCuoi(Sheets("NHAPTONGHOP"), "C"))
        Set rgn_DK = ws.Range("L3:N4")
        Set rgn_KQ = ws.Range("B13:G13")
        
        rgn.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=rgn_DK, _
        CopyToRange:=rgn_KQ, _
        Unique:=False
    'Phan cuoi bao cao
        Dim lr As Long
        lr = DongCuoi(Sheets("IN"), "B")
        
        Range("L19:Q24").Copy
        Range("B" & lr + 2).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
End Sub

trong đó vùng L19:Q24 là vùng ở phía dưới báo cáo. Tạo sẵn vùng này trước ở bên ngoài báo cáo, sau khi advanced filter ra kết quả => tìm dòng cuối và copy-paste vùng này vào báo cáo là được.

Vỗ tay vỗ tay
Nguyen thi huyen trang 12:08 - Aug 29, 2021

Em làm đc rồi e cảm ơn thầy ạ

Vỗ tay vỗ tay
Nguyen thi huyen trang 22:09 - Sep 01, 2021
E đang băn khoăn lựa chọn khóa học về SQL. Theo thầy e nên lựa khóa VBAG02 hay khóa CG01 nhỉ. E cũng chẳng rõ trình độ hiện tại của e có theo đc khóa học SQL này ko. Mong các thầy tư vấn giúp ạ
Vỗ tay vỗ tay
Nguyen thi huyen trang 09:09 - Sep 04, 2021

chào bạn nếu bạn làm trên excel nhiều và không muốn cài visual thì bạn học VBAG02 nhé.

Vỗ tay vỗ tay
Nguyen thi huyen trang 09:09 - Sep 04, 2021

Ok thank you thầy

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông