Menu

Tự động hóa tạo danh sách thả xuống (Dropdown List) động trong Excel bằng Python

Hàn Tuyết Cường 08/06/2026 21:36 412 lượt xem 2 trả lời

Chào các anh em trong diễn đàn Sheet & Excel!

Dạo này mình có mày mò dùng Python trong Excel để tự động hóa một vài tác vụ. Hôm nay mình muốn chia sẻ một mẹo nhỏ mà mình thấy khá hữu ích, đó là cách tự động cập nhật danh sách thả xuống (dropdown list) khi có dữ liệu mới.

Thông thường, khi tạo danh sách thả xuống từ một vùng dữ liệu, nếu mình thêm dữ liệu mới vào vùng đó, danh sách thả xuống sẽ không tự động cập nhật. Việc phải vào lại phần Data Validation để sửa vùng dữ liệu khá là mất thời gian, đặc biệt với các file lớn hoặc cần cập nhật thường xuyên.

Với Python trong Excel, mình đã tìm ra cách để giải quyết vấn đề này một cách gọn gàng. Ý tưởng là chúng ta sẽ dùng Python để đọc dữ liệu nguồn, xử lý để lấy ra danh sách duy nhất (nếu cần), sau đó ghi đè lại vùng dữ liệu dùng cho danh sách thả xuống.

Cụ thể, các bước cơ bản sẽ như sau:

  • Xác định vùng dữ liệu nguồn chứa các mục cho dropdown list.
  • Viết một đoạn code Python để đọc dữ liệu từ vùng đó. Có thể dùng hàm read_excel hoặc đơn giản là truy cập trực tiếp vào DataFrame của Excel.
  • Xử lý dữ liệu nếu cần (ví dụ: loại bỏ trùng lặp, sắp xếp).
  • Ghi lại danh sách đã xử lý vào một vùng khác hoặc ghi đè lên vùng cũ (cẩn thận khi ghi đè).
  • Thiết lập Data Validation để tham chiếu đến vùng dữ liệu được cập nhật bởi Python.

Ví dụ về cách đọc dữ liệu và lấy danh sách duy nhất:

import pandas as pd

# Giả sử dữ liệu nguồn nằm ở vùng A1:A100 trên Sheet1
df_source = xl(
                
1

Chào bạn, bài chia sẻ của bạn hay quá! Mình cũng hay gặp trường hợp này, thêm dữ liệu mà quên sửa lại dropdown list là coi như công toi.

Bạn có thể chia sẻ cụ thể hơn về đoạn code Python mà bạn dùng để cập nhật danh sách thả xuống không? Mình muốn xem cách bạn xử lý để nó tự động nhận diện dữ liệu mới. Cảm ơn bạn nhiều nhé!

3

Cái này hay nè! Mình cũng từng đau đầu với vụ cập nhật dropdown list thủ công. Python đúng là cứu cánh cho mấy tác vụ lặp đi lặp lại kiểu này.

Mình tò mò không biết bạn xử lý trường hợp dữ liệu mới thêm vào nằm xen kẽ hay chỉ thêm ở cuối bảng thôi? Cách code của bạn có tự động co giãn vùng dữ liệu theo "độ phình" của bảng không? Chia sẻ thêm cho anh em học hỏi với!

4

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

Đăng nhập Đăng ký