코딩 자동화 & 스크립트
Python으로 엑셀 자동화 – 여러 시트에서 조건에 맞는 데이터 추출하기
heoncode
2025. 4. 25. 14:23
728x90
반응형
SMALL
Python으로 엑셀 자동화 – 여러 시트에서 조건에 맞는 데이터 추출하기
업무에서 엑셀 파일을 다룰 때, 여러 시트에 흩어져 있는 데이터 중 특정 조건을 만족하는 항목만 추출해야 하는 경우가 종종 있습니다. 이 작업을 매번 수작업으로 수행하면 많은 시간이 소요되며 실수 가능성도 높습니다. Python의 pandas
와 openpyxl
을 활용하면 이러한 반복 작업을 간단하게 자동화할 수 있습니다.
이번 글에서는 하나의 엑셀 파일 내 여러 시트에서 특정 조건을 만족하는 데이터를 한 시트에 모아 정리하는 자동화 스크립트를 구현해보겠습니다.
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