코딩 자동화 & 스크립트

Python으로 엑셀 자동화 – 여러 시트에서 조건에 맞는 데이터 추출하기

heoncode 2025. 4. 25. 14:23
728x90
반응형
SMALL

Python으로 엑셀 자동화 – 여러 시트에서 조건에 맞는 데이터 추출하기

업무에서 엑셀 파일을 다룰 때, 여러 시트에 흩어져 있는 데이터 중 특정 조건을 만족하는 항목만 추출해야 하는 경우가 종종 있습니다. 이 작업을 매번 수작업으로 수행하면 많은 시간이 소요되며 실수 가능성도 높습니다. Python의 pandasopenpyxl을 활용하면 이러한 반복 작업을 간단하게 자동화할 수 있습니다.

이번 글에서는 하나의 엑셀 파일 내 여러 시트에서 특정 조건을 만족하는 데이터를 한 시트에 모아 정리하는 자동화 스크립트를 구현해보겠습니다.

1. 준비 사항

우선 필요한 라이브러리를 설치합니다.

pip install pandas openpyxl

엑셀 파일은 다음과 같은 구조를 가정합니다:

  • 파일 이름: data.xlsx
  • 각 시트에는 동일한 열 구조가 존재
  • 필터 조건: 'Status' 열이 'Completed'인 행만 추출

2. 여러 시트를 읽어오는 코드

import pandas as pd

file_path = 'data.xlsx'
excel_data = pd.read_excel(file_path, sheet_name=None)  # 모든 시트 불러오기

result_df = pd.DataFrame()

for sheet_name, df in excel_data.items():
    if 'Status' in df.columns:
        filtered = df[df['Status'] == 'Completed']
        filtered['Source Sheet'] = sheet_name  # 원본 시트 정보 추가
        result_df = pd.concat([result_df, filtered], ignore_index=True)

3. 결과 저장

필터링된 데이터를 새로운 시트로 저장합니다.

with pd.ExcelWriter('filtered_result.xlsx', engine='openpyxl') as writer:
    result_df.to_excel(writer, index=False, sheet_name='Filtered Data')

4. 스크립트 실행 결과 예시

data.xlsx에 여러 시트가 있는 경우, 이 스크립트를 실행하면 'Status' 열이 'Completed'인 행들만 추출되어 filtered_result.xlsx'Filtered Data' 시트에 정리됩니다. 또한 각 행이 어느 시트에서 왔는지 확인할 수 있도록 'Source Sheet' 열이 자동 추가됩니다.

5. 활용 팁

  • 필터 조건을 복수 조건(&, |)으로 확장할 수 있습니다.
  • 특정 열이 없는 시트는 자동으로 건너뜁니다.
  • 스크립트를 .bat 또는 .sh 파일로 감싸두면 반복 실행이 쉬워집니다.

결론

엑셀 자동화는 실무에서 생산성을 크게 높일 수 있는 분야입니다. 특히 여러 시트를 동시에 다루거나, 조건에 따라 데이터를 정리하는 작업은 수작업보다 자동화가 훨씬 효율적입니다. 위 스크립트를 바탕으로 다양한 업무 시나리오에 맞는 자동화를 구성해보시기 바랍니다.

#Python #엑셀자동화 #pandas #openpyxl #조건부필터링 #업무자동화

728x90
반응형
LIST