Menu

Tự động tạo danh sách duy nhất từ nhiều file Excel bằng Python

Lệ Phú Nhung 20/03/2026 19:02 497 lượt xem 2 trả lời

Chào các bác, dạo này em đang tập tành làm quen với Python trong Excel để tự động hóa mấy tác vụ lặp đi lặp lại. Em có một mớ file Excel báo cáo bán hàng của các chi nhánh, mỗi file có một sheet ghi lại danh sách khách hàng đã mua hàng. Vấn đề là danh sách này bị trùng lặp rất nhiều giữa các file. Em muốn gom tất cả danh sách khách hàng từ tất cả các file lại, và chỉ lấy ra danh sách duy nhất thôi.

Trước đây em toàn làm thủ công, copy paste rồi dùng chức năng Remove Duplicates của Excel, nhưng với số lượng file ngày càng tăng thì cách này tốn thời gian quá.

Em thử tìm hiểu thì thấy Python có thể làm được việc này. Bác nào có kinh nghiệm hoặc có sẵn đoạn script nào để gom dữ liệu từ nhiều file Excel và lọc ra danh sách duy nhất thì chia sẻ cho em với ạ. Em chỉ cần list tên khách hàng thôi, không cần các thông tin khác.

Ví dụ cấu trúc file của em:

File1.xlsx
  Sheet1: [TenKH1, TenKH2, TenKH3]
File2.xlsx
  Sheet1: [TenKH2, TenKH4, TenKH5]
...

Mong muốn kết quả:

[TenKH1, TenKH2, TenKH3, TenKH4, TenKH5, ...]

Em cảm ơn!

2

Hay quá bạn ơi! Mình cũng đang vật lộn với việc gom dữ liệu từ nhiều file Excel đây. Cái vụ tự động hóa này đúng là cứu cánh cho dân văn phòng.

Về việc lấy danh sách duy nhất, ngoài cách bạn dùng thì mình hay kết hợp pandas để đọc các file Excel, sau đó dùng phương thức drop_duplicates() để loại bỏ trùng lặp. Sau khi có danh sách sạch, mình mới ghi ngược lại vào một file Excel mới.

Bạn có thể chia sẻ thêm về thư viện Python nào bạn đang dùng để đọc file Excel không? Có vẻ cái này rất hữu ích.

4
Tuyệt vời! Cái vụ gom danh sách khách hàng từ nhiều file này đúng là nỗi ám ảnh của nhiều anh em văn phòng. Mình cũng từng vất vả với việc này trước khi biết đến Python. Nếu bạn đang dùng pandas, thì đúng là một lựa chọn quá ngon lành rồi. Để đọc nhiều file Excel, bạn có thể dùng glob để lấy danh sách tất cả các file trong một thư mục, rồi lặp qua từng file để đọc bằng pd.read_excel(). Sau đó, dùng pd.concat() để gộp chúng lại và cuối cùng là drop_duplicates(). Bạn thử xem cách này có nhanh hơn không nhé: ```html

Tuyệt vời! Cái vụ gom danh sách khách hàng từ nhiều file này đúng là nỗi ám ảnh của nhiều anh em văn phòng. Mình cũng từng vất vả với việc này trước khi biết đến Python.

Nếu bạn đang dùng pandas, thì đúng là một lựa chọn quá ngon lành rồi. Để đọc nhiều file Excel, bạn có thể dùng glob để lấy danh sách tất cả các file trong một thư mục, rồi lặp qua từng file để đọc bằng pd.read_excel(). Sau đó, dùng pd.concat() để gộp chúng lại và cuối cùng là drop_duplicates().

Bạn thử xem cách này có nhanh hơn không nhé:


import pandas as pd
import glob
import os

# Đường dẫn đến thư mục chứa các file Excel
folder_path = 'duong/dan/den/thu/muc/cua/ban'

# Lấy danh sách tất cả các file Excel (.xlsx) trong thư mục
excel_files = glob.glob(os.path.join(folder_path, "*.xlsx"))

# Tạo một DataFrame rỗng để chứa dữ liệu gom lại
all_data = pd.DataFrame()

# Lặp qua từng file Excel để đọc và gom dữ liệu
for file in excel_files:
    df = pd.read_excel(file)
    all_data = pd.concat([all_data, df], ignore_index=True)

# Loại bỏ các dòng trùng lặp (giả sử cột khách hàng tên là 'TenKhachHang')
# Bạn có thể thay 'TenKhachHang' bằng tên cột thực tế của bạn
unique_customers = all_data.drop_duplicates(subset=['TenKhachHang'])

# In ra kết quả hoặc lưu vào file mới
print("Danh sách khách hàng duy nhất:")
print(unique_customers)

# Lưu danh sách duy nhất vào một file Excel mới (tùy chọn)
# unique_customers.to_excel('danh_sach_khach_hang_duy_nhat.xlsx', index=False)

Bạn có thể điều chỉnh tên cột 'TenKhachHang' cho phù hợp với file của mình nhé. Cách này vừa gọn, vừa hiệu quả, lại ít lỗi hơn làm thủ công nhiều.

5

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

Đăng nhập Đăng ký