Menu

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

Từ Nguyệt Như 10/06/2026 19:55 186 lượt xem 3 trả lời

Chào mọi người,

Mình mới tìm hiểu về Python để tương tác với Excel và có một chút kinh nghiệm muốn chia sẻ với anh em. Dạo này sếp mình hay yêu cầu tạo các file Excel có danh sách thả xuống (dropdown list) để nhập liệu cho chuẩn, mà làm thủ công trên file lớn thì khá mất thời gian.

Sau một hồi mày mò, mình đã tìm ra cách dùng thư viện pandasopenpyxl trong Python để tự động tạo danh sách thả xuống này. Cách này rất tiện, đặc biệt khi bạn cần tạo nhiều dropdown list với các tùy chọn khác nhau hoặc cập nhật danh sách đó thường xuyên.

Cụ thể, mình sẽ lấy dữ liệu cho dropdown list từ một cột khác trong cùng một file Excel hoặc từ một file CSV riêng. Dưới đây là một ví dụ code đơn giản:

import pandas as pd
from openpyxl.worksheet.datavalidation import DataValidation

# Giả sử bạn có file Excel 'data.xlsx'
# và muốn tạo dropdown list cho cột 'B' (từ B2 trở đi)
# dựa trên dữ liệu ở cột 'A' (từ A2 trở đi)

df = pd.read_excel('data.xlsx')

# Đọc dữ liệu cho dropdown list
dropdown_options = df['ColumnA'].unique().tolist()

# Tạo một ExcelWriter object
writer = pd.ExcelWriter('output.xlsx', engine='openpyxl')
df.to_excel(writer, sheet_name='Sheet1', index=False)

workbook = writer.book
worksheet = writer.sheets['Sheet1']

# Tạo DataValidation object
dv = DataValidation(type='list', formula1=f"'{'Sheet1'}!$A$2:$A${len(dropdown_options) + 1}" if len(dropdown_options) > 0 else None, allow_blank=True)

# Áp dụng validation cho cột B (từ hàng 2)
for row_num in range(2, len(df) + 2):
    worksheet.cell(row=row_num, column=2).data_validation = dv

writer.save()
print("Đã tạo file 'output.xlsx' với dropdown list!")

Lưu ý:

  • Bạn cần cài đặt pandasopenpyxl nếu chưa có: pip install pandas openpyxl
  • Đoạn code trên là ví dụ, bạn cần điều chỉnh tên file, tên sheet, tên cột cho phù hợp với dữ liệu của mình.
  • Phần formula1 có thể cần điều chỉnh tùy thuộc vào cách bạn muốn lấy dữ liệu (ví dụ: từ một vùng cố định, hoặc từ một cột khác). Trong ví dụ này, mình giả định dữ liệu nguồn nằm ở cột A.

Hy vọng chia sẻ này giúp ích được cho mọi người. Có ai có cách làm hay hơn hoặc gặp vấn đề gì thì cùng thảo luận nhé!

5

Chào bạn,

Cảm ơn bạn đã chia sẻ cách tự động hóa tạo dropdown list bằng Python. Mình thấy đây là một giải pháp rất hay, đặc biệt với những file Excel dung lượng lớn hoặc cần cập nhật thường xuyên. Mình cũng đang nghiên cứu dùng Python để xử lý Excel, bạn có thể chia sẻ thêm về kinh nghiệm làm việc với thư viện openpyxl không? Ví dụ như cách xử lý các định dạng phức tạp hay làm việc với nhiều sheet cùng lúc chẳng hạn.

3

Hay quá bạn ơi! Cách này đúng là cứu cánh cho những ai phải làm việc với file Excel nhiều dropdown list. Mình cũng hay gặp cảnh phải tạo thủ công mà phát mệt.

Bạn có thể cho mình xin đoạn code mẫu để tạo một dropdown list đơn giản không? Mình muốn thử nghiệm ngay xem sao. Cảm ơn bạn đã chia sẻ nhé!

2

Đúng là làm thủ công với các file Excel lớn mà có nhiều dropdown list thì dễ "tẩu hỏa nhập ma" thật. Mình cũng từng trải qua cảm giác đó.

Cách bạn dùng Python để tự động hóa là một ý tưởng rất hay, nhất là khi cần cập nhật hay tạo mới liên tục. Mình tò mò không biết bạn xử lý trường hợp các tùy chọn cho dropdown list nằm ở một sheet khác hay một file Excel khác thì có phức tạp không? Chia sẻ thêm kinh nghiệm nhé!

5

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

Đăng nhập Đăng ký