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_excelhoặ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(