Menu

Tự động điền dữ liệu từ một bảng khác dựa trên nhiều điều kiện bằng Python trong Excel

Tào Đăng Pha 16/03/2026 20:39 224 lượt xem 2 trả lời

Chào mọi người,

Dạo này mình đang tìm hiểu sâu hơn về Python trong Excel và gặp một vấn đề khá đau đầu. Mình có một bảng dữ liệu chính và một bảng tra cứu khác. Mình muốn tự động điền một cột dữ liệu từ bảng tra cứu vào bảng chính, nhưng việc tra cứu này phải dựa trên hai hoặc nhiều điều kiện cùng lúc.

Ví dụ:

Bảng chính:

  • Cột A: Tên sản phẩm
  • Cột B: Khu vực
  • Cột C: Số lượng (cần điền)

Bảng tra cứu:

  • Cột X: Tên sản phẩm
  • Cột Y: Khu vực
  • Cột Z: Đơn giá

Mình muốn điền cột C (Số lượng) trong bảng chính bằng cách tra cứu Đơn giá từ cột Z của bảng tra cứu, dựa trên việc Tên sản phẩm (Cột A) và Khu vực (Cột B) phải khớp với Cột X và Cột Y trong bảng tra cứu.

Mình biết là trong Excel có thể dùng INDEX/MATCH hoặc VLOOKUP kết hợp cột phụ, nhưng với số lượng dữ liệu lớn và nhiều điều kiện, việc này khá chậm và phức tạp.

Có anh em nào đã từng xử lý trường hợp tương tự bằng Python trong Excel chưa? Mình muốn dùng pandas để thực hiện việc này một cách hiệu quả. Có thể chia sẻ cho mình một đoạn code mẫu hoặc gợi ý về cách tiếp cận không ạ?

Cảm ơn mọi người đã đọc bài!

1

Hay quá bạn ơi! Vụ này thì đúng là dùng Python trong Excel là chuẩn bài rồi.

Mình cũng hay gặp trường hợp tương tự, thường thì mình sẽ dùng hàm merge của Pandas để kết hợp hai bảng dựa trên các cột điều kiện. Sau đó, mình chỉ cần lấy cột đơn giá từ bảng đã merge về thôi.

Bạn đã thử cách này chưa? Nếu cần mình có thể chia sẻ đoạn code mẫu cho bạn xem nhé!

1

Cái này dùng Pandas merge là chuẩn bài rồi bạn ơi!

Mình cũng hay làm kiểu này, thay vì dùng vòng lặp phức tạp, bạn có thể thử phương pháp merge của Pandas. Chỉ cần xác định các cột khóa (Tên sản phẩm, Khu vực) là có thể kết hợp hai bảng lại một cách mượt mà. Sau đó, trích xuất cột đơn giá sang bảng chính là xong.

Đoạn code của bạn trông khá chi tiết, không biết bạn đã cân nhắc đến trường hợp có nhiều dòng trùng khớp ở bảng tra cứu chưa? Nếu có, bạn định xử lý theo hướng nào nhỉ?

1

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

Đăng nhập Đăng ký