Lập báo cáo thống kê

Liên hệ QC

bactu

Thành viên thường trực
Tham gia
19/10/07
Bài viết
304
Được thích
277
Donate (Momo)
Donate
Em mới học VBA. Có lỗi phát sinh không biết cách gỡ như thế nào và thực hiện báo cáo theo mong muốn như sau:
Trong báo cáo em chia ra làm 2 phần: phần 1 từ vùng A55 đến vùng V156: phần này em thực hiện đã xong.

Phần 2 từ vùng A158 đến V7100, hiện tại em bị vướng 2 phần như sau:
1. Cột cộng dồn từ đầu năm: M158 và O158 trở xuống, kết quả ra bị sai. Cách tính như sau: dựa vào dữ liệu cột B bên sheet BAOCAOVBA (cái này em thực hiện Dic để tự thêm vào), lấy số liệu từ sheet DATA căn cứ vào cột A đến cột F để tính ra số liệu cộng dồn từ đầu năm thực hiện báo cáo đến tháng thực hiện báo cáo.

2. Có cách nào mình thực hiện được báo cáo như mẫu kế bên tại sheet BAOCAOVBA tại cột Y158

Xin cảm ơn rất nhiều!!!
 

File đính kèm

  • 05. Thong ke nhap khau 1.xlsm
    1.4 MB · Đọc: 21
Em mới học VBA. Có lỗi phát sinh không biết cách gỡ như thế nào và thực hiện báo cáo theo mong muốn như sau:
Trong báo cáo em chia ra làm 2 phần: phần 1 từ vùng A55 đến vùng V156: phần này em thực hiện đã xong.

Phần 2 từ vùng A158 đến V7100, hiện tại em bị vướng 2 phần như sau:
1. Cột cộng dồn từ đầu năm: M158 và O158 trở xuống, kết quả ra bị sai. Cách tính như sau: dựa vào dữ liệu cột B bên sheet BAOCAOVBA (cái này em thực hiện Dic để tự thêm vào), lấy số liệu từ sheet DATA căn cứ vào cột A đến cột F để tính ra số liệu cộng dồn từ đầu năm thực hiện báo cáo đến tháng thực hiện báo cáo.

2. Có cách nào mình thực hiện được báo cáo như mẫu kế bên tại sheet BAOCAOVBA tại cột Y158

Xin cảm ơn rất nhiều!!!
Báo cáo kiểu này mà không kỹ tính 1 chút là sai chắc. Bạn kiểm tra kỹ lại điều kiện đưa vào dic và điều kiện đưa vào mảng kết quả đi.
 
Upvote 0
Báo cáo kiểu này mà không kỹ tính 1 chút là sai chắc. Bạn kiểm tra kỹ lại điều kiện đưa vào dic và điều kiện đưa vào mảng kết quả đi.
Em mới kiểm tra mới phát hiện ra cái đoạn sau:
If K thay thế thành If K2

Kết quả vẫn chưa đúng, mong Anh/Chị chỉ thêm

Xin cảm ơn nhiều!!!
 
Upvote 1
Em mới kiểm tra mới phát hiện ra cái đoạn sau:
If K thay thế thành If K2

Kết quả vẫn chưa đúng, mong Anh/Chị chỉ thêm

Xin cảm ơn nhiều!!!
Khi thời gian nằm trong tháng báo cáo thì số liệu của tháng và số liệu cộng dồn (lũy kế) đều phải tăng. Trong khi đó, bạn chỉ cộng mỗi số liệu tháng mà quên cộng vào số liệu lũy kế
 
Upvote 0
Khi thời gian nằm trong tháng báo cáo thì số liệu của tháng và số liệu cộng dồn (lũy kế) đều phải tăng. Trong khi đó, bạn chỉ cộng mỗi số liệu tháng mà quên cộng vào số liệu lũy kế
Cái cột lũy kế theo cách nghĩ của em làm như sau:

Mã:
        If sArr(I, 1) <= NgayCT Then                                  'Nếu ngày báo cáo nhỏ hơn ngày cuối tháng
            If sArr(I, 1) >= NgayDN Then                              'Nếu ngày báo cáo lớn hơn ngày đầu năm - Tức là mình tính lũy kế đoạn này
                Mathang_xx = sArr(I, 3) & " - " & sArr(I, 2)
                    If Not Dic.Exists(Mathang_xx) Then
                        K2 = K2 + 1
                        Dic.Item(Mathang_xx) = K2
                        dAr2(K2, 1) = K2
                        dAr2(K2, 2) = Mathang_xx
                        dAr2(K2, 13) = sArr(I, 5)                      'Cột lũy kế số lượng
                        dAr2(K2, 15) = sArr(I, 6)                      'Cột lũy kế giá trị
                    Else
                        R2 = Dic.Item(Mathang_xx)
                        dAr2(R2, 13) = dAr2(R, 13) + sArr(I, 5)         'Cột lũy kế số lượng
                        dAr2(R2, 15) = dAr2(R, 15) + sArr(I, 6)         'Cột lũy kế giá trị
                   End if
              End if

Không biết em bị sai ở đoạn nào ở trên, mong Anh/Chị hướng dẫn giúp em.
Cảm ơn rất nhiều!!!
 
Upvote 0
Cái cột lũy kế theo cách nghĩ của em làm như sau:
Không biết em bị sai ở đoạn nào ở trên, mong Anh/Chị hướng dẫn giúp em.
Cảm ơn rất nhiều!!!
Thấy nó vẫn sai thì như mình trước tiên đưa về cách viết code chân phương nhất có thể để tự kiểm tra; & qua đó mới nhớ lâu;
Chứ mỗi vướng mỗi nhờ người khác tìm giúp thì . . . . lười hết biết!
 
Upvote 0
Dạ cái này em trích từ trong file ra, nó còn 1 đoạn sau nữa.

Thấy nó vẫn sai thì như mình trước tiên đưa về cách viết code chân phương nhất có thể để tự kiểm tra; & qua đó mới nhớ lâu;
Chứ mỗi vướng mỗi nhờ người khác tìm giúp thì . . . . lười hết biết!
Dạ em xin tiếp thu góp ý. Do phương thức làm chưa đúng cho nên còn nhiều cái cần phải học hỏi thêm.

Có cái em đã xem đi xem lại nhiều lần, cả 2 cái vùng thì cách làm tương đương như nhau mà không hiểu sao 1 cái ra đúng, còn cái còn lại không đúng.

Em xin cảm ơn rất nhiều!!!
 
Upvote 0
Cái cột lũy kế theo cách nghĩ của em làm như sau:

Mã:
        If sArr(I, 1) <= NgayCT Then                                  'Nếu ngày báo cáo nhỏ hơn ngày cuối tháng
            If sArr(I, 1) >= NgayDN Then                              'Nếu ngày báo cáo lớn hơn ngày đầu năm - Tức là mình tính lũy kế đoạn này
                Mathang_xx = sArr(I, 3) & " - " & sArr(I, 2)
                    If Not Dic.Exists(Mathang_xx) Then
                        K2 = K2 + 1
                        Dic.Item(Mathang_xx) = K2
                        dAr2(K2, 1) = K2
                        dAr2(K2, 2) = Mathang_xx
                        dAr2(K2, 13) = sArr(I, 5)                      'Cột lũy kế số lượng
                        dAr2(K2, 15) = sArr(I, 6)                      'Cột lũy kế giá trị
                    Else
                        R2 = Dic.Item(Mathang_xx)
                        dAr2(R2, 13) = dAr2(R, 13) + sArr(I, 5)         'Cột lũy kế số lượng
                        dAr2(R2, 15) = dAr2(R, 15) + sArr(I, 6)         'Cột lũy kế giá trị
                   End if
              End if

Không biết em bị sai ở đoạn nào ở trên, mong Anh/Chị hướng dẫn giúp em.
Cảm ơn rất nhiều!!!
Xem file.
1/ Tôi sửa code vùng 2 của bạn với lưu ý là tìm đến dòng đầu của năm báo cáo rồi lấy mảng nguồn từ đó đến cuối dữ liệu. Nếu chạy từ đầu (năm 2012) đến cuối dữ liệu (2021) như code của bạn thì thời gian chạy rất lâu.
2/ Tại sheet BC, bấm nút chạy báo cáo như yêu cầu của bạn ở mục 2 của bài #1
 

File đính kèm

  • 05. Thong ke nhap khau 1_bactu.xlsm
    1.5 MB · Đọc: 10
Upvote 0
Xem file.
1/ Tôi sửa code vùng 2 của bạn với lưu ý là tìm đến dòng đầu của năm báo cáo rồi lấy mảng nguồn từ đó đến cuối dữ liệu. Nếu chạy từ đầu (năm 2012) đến cuối dữ liệu (2021) như code của bạn thì thời gian chạy rất lâu.
2/ Tại sheet BC, bấm nút chạy báo cáo như yêu cầu của bạn ở mục 2 của bài #1
Em cảm ơn Anh/Chị rất nhiều!!!
 
Upvote 0
Tôi thấy dữ liệu đang có vấn đề, ví dụ trường mã hàng hóa, phải là duy nhất, trong khi trùng rất nhiều, vậy quá khó để thống kê/tổng hợp.

Snag_d93ebf0.png
 
Upvote 0
Tôi thấy dữ liệu đang có vấn đề, ví dụ trường mã hàng hóa, phải là duy nhất, trong khi trùng rất nhiều, vậy quá khó để thống kê/tổng hợp.

View attachment 267135
Dạ mã hàng hóa này là mã HS trong tờ khai nhập khẩu. Có nhiều loại nguyên liệu nhập khẩu có tính chất tương đương hoặc không được phân biệt rõ ràng nên bị trùng nhau.
 
Upvote 0
Tôi làm bằng Power Query và Pivot Table,
Tại sheet REPORT, nhập ngày cần báo cáo ô B4, click phải chuột vùng báo cáo, chọn Refresh, số liệu sẽ cập nhật đến kỳ báo cáo.
 

File đính kèm

  • Thong ke nhap khau.xlsm
    1.8 MB · Đọc: 5
Upvote 0
Tôi thử làm lại Form Báo cáo, Chi tiết theo mặt hàng, đều bằng Power Query.
Hy vọng có thêm một giải pháp cho bạn ngoài việc dùng VBA.
 

File đính kèm

  • Thong ke nhap khau.xlsm
    1.6 MB · Đọc: 15
Upvote 0
Tôi làm bằng Power Query và Pivot Table,
Tại sheet REPORT, nhập ngày cần báo cáo ô B4, click phải chuột vùng báo cáo, chọn Refresh, số liệu sẽ cập nhật đến kỳ báo cáo.
Tôi thử làm lại Form Báo cáo, Chi tiết theo mặt hàng, đều bằng Power Query.
Hy vọng có thêm một giải pháp cho bạn ngoài việc dùng VBA.
Để em lấy file về nghiên cứu thêm
Em cảm ơn rất nhiều!!!

Sau thời gian mày mò, và có code của Anh/chị Maika8008 thì em đã làm được như file dưới.
 

File đính kèm

  • 05. Thong ke nhap khau VBA.xlsm
    728.2 KB · Đọc: 12
Upvote 0
Web KT

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

Back
Top Bottom