Sử dụng VBA để tự động chạy so sánh tăng giảm, lọc khách hàng mới, và khách hàng rời bỏ

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

70211119

Thành viên mới
Tham gia
10/10/12
Bài viết
27
Được thích
5
Em có bài toán này nhưng mãi không giải ra được, nên hôm nay em đăng lên nhờ Anh/Chị hỗ trợ ạ.
Em có 2 file, gồm 06032024.xlsx (là dữ liệu ngày 06/03/2024) và file 31122023.xlsx (là dữ liệu ngày 31/12/2023).
Công việc của em nếu làm theo cách thủ công thì đầu tiên sẽ dùng Pivot Table để sum theo mã khách hàng (cả 2 file). Sau đó, sẽ là sử dụng Vlookup tại file 06032024.xlsx để lấy dữ liệu doanh số từ file 31/12/2023. Sau đó trừ nhau để biết số tăng giảm. Còn các dòng dữ liệu #N/A là thể hiện KH mới phát sinh. Sau đó em qua file 31122023.xlsx và vlookup ngược lại, lấy dòng #N/A để biết khách hàng nào đến ngày 06/03/2024 không phát sinh doanh số.
Kết quả báo cáo cuối cùng sẽ gồm:
  1. Các khách hàng có biến động doanh số (tăng/giảm)
  2. Các khách hàng mới (kỳ 06/03/2024 có nhưng kỳ 31/12/2024 không có)
  3. Các khách hàng rời bỏ (kỳ 31/12/2024 có nhưng kỳ 06/03/2024 không có)
Em phải làm công việc này hàng ngày, so sánh các kỳ dữ liệu ngẫu nhiên nên cũng hơi mất thời gian, nên e muốn dùng vba để tự độg thao tác.
Nhờ Anh Chị trong diễn đàn hướng dẫn em thuật toán nào tối ưu để giải quyết vấn đề này ạ.
Em xin cảm ơn ạ./.
 

File đính kèm

  • 06032024.xlsx
    158 KB · Đọc: 4
  • 31122023.xlsx
    183.2 KB · Đọc: 4
Nếu làm tay thì tôi làm khác:

- Mở file "phân tích", file 2023, và file 2024
- Copy sheet page của 2023 và 2024 vào "phân tích". Sheet page của file 2024 sẽ mang tên 'page (2)'
- Ở cột C sheet page, gõ "Page" (tiltle), kế gõ 1 (dữ liệu) và fill xuống. Với sheet 'page (2)' thì dùng số 2. Mục đích là để dánh dấu dữ liệu thuộc về file nào.
- Copy dữ liệu cả hai sheets này vào Sheet1.
- Find dòng chứa "Mã khách hàng" thứ hai và delete dòng này. Như vậy dữ liệu sheet1 chỉ còn 1 dòng title.
- Dùng Pivot Table để consolidate dữ liệu trên
-- Rows: Mã khách hàng
-- Columns: Page
-- Values: Sum of Doanh số; Count of Mã khách hàng
- Add Sheet2. Copy/paste value kết quả của Pivot tabel vào.
Vậy là có đủ data để phân tích một cách dễ dàng.

Nếu biết Power Pivot và Power query thì càng dễ và nhanh hơn.

Nếu code VBA thì từ gợi ý là ADODB.
 
Upvote 0
Theo gợi ý từ @VetMini thử giải bằng Power Query...
Chủ thớt tự kiểm tra kết quả nha !
 

File đính kèm

  • 06032024.xlsx
    372.3 KB · Đọc: 12
Upvote 0
Web KT
Back
Top Bottom