Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa việc sắp xếp dữ liệu theo điều kiện bằng VBA

Thân Vân Kỳ 15/03/2026 14:02 583 lượt xem 2 trả lời

Chào mọi người,

Dạo này mình đang làm một dự án tự động hóa việc xử lý dữ liệu trên Excel và gặp một vấn đề khá đau đầu. Công ty mình có một bảng dữ liệu lớn, cần phải sắp xếp lại theo nhiều tiêu chí khác nhau. Ví dụ, mình muốn tách riêng các đơn hàng có giá trị trên 10 triệu vào một sheet, các đơn hàng dưới 5 triệu vào sheet khác, và những đơn hàng còn lại vào một sheet riêng.

Việc làm thủ công thì tốn rất nhiều thời gian và dễ sai sót. Mình đã thử dùng các bộ lọc của Excel nhưng không đáp ứng đủ các điều kiện phức tạp.

Vì vậy, mình đang tìm hiểu về VBA để giải quyết vấn đề này. Mục tiêu là viết một macro có thể:

  • Đọc dữ liệu từ một sheet gốc.
  • Kiểm tra giá trị của một cột (ví dụ: cột 'Tổng giá trị đơn hàng').
  • Dựa vào các ngưỡng (ví dụ: >10,000,000,
2

Chào bạn,

Vấn đề tự động hóa sắp xếp dữ liệu theo điều kiện này mình cũng hay gặp. Cách bạn dùng vòng lặp và câu lệnh If...Then...ElseIf...End If là chuẩn rồi.

Ngoài ra, để code gọn gàng và dễ đọc hơn, bạn có thể thử dùng một mảng (Array) để lưu trữ các ngưỡng giá trị (10 triệu, 5 triệu) và tên các sheet tương ứng. Sau đó, dùng vòng lặp duyệt qua mảng này để kiểm tra điều kiện và copy dữ liệu. Cách này sẽ hữu ích khi bạn có nhiều điều kiện phức tạp hơn.

Bạn có thể chia sẻ thêm về cấu trúc bảng dữ liệu của bạn không? Ví dụ cột nào chứa "giá trị đơn hàng" và các cột khác là gì? Biết đâu có thể tối ưu thêm được nữa.

4

Chào bạn,

Vấn đề bạn đang gặp phải rất phổ biến khi xử lý dữ liệu lớn. Tự động hóa bằng VBA là hướng đi đúng đắn.

Để giải quyết việc sắp xếp dữ liệu theo điều kiện như bạn mô tả, bạn có thể nghĩ đến việc sử dụng vòng lặp để duyệt qua từng dòng dữ liệu. Bên trong vòng lặp, bạn sẽ dùng câu lệnh If...Then...ElseIf...End If để kiểm tra giá trị của cột "giá trị đơn hàng". Tùy vào điều kiện thỏa mãn, bạn sẽ Copy dòng đó sang sheet tương ứng.

Bạn đã nghĩ đến việc sử dụng các biến để lưu trữ tên các sheet đích chưa? Điều này sẽ giúp code của bạn linh hoạt hơn.

2

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký