Excel MAX와 Python CSV로 가상 작업 기록 3행 검산하기
가상 작업 기록 세 행으로 Excel의 MAX 수식과 CSV 저장 범위를 확인합니다. SpeedCheck!D5의 기대값은 35, Python으로 읽은 CSV의 데이터 행 수는 3입니다. 요약 셀을 데이터에 섞거나 숫자를 문자로 저장했을 때 어떤 확인값이 달라지는지도 직접 구분합니다.
먼저 준비할 파일과 확인 범위
첨부 XLSX를 읽을 Excel, Python 실행 환경, 새 연습 폴더를 준비합니다. 업무 원본에는 적용하지 않고 첨부 사본을 사용합니다. Python 코드는 표준 라이브러리 csv만 사용하며 외부 서비스에 요청하지 않습니다. 파일 이름은 speed-check.csv와 check_speed_record.py로 고정하고 같은 폴더에 둡니다.

작업명과 상태는 연습용 문자열이고 숫자는 모두 가상 입력입니다. Excel정리, PowerQuery병합, PythonCSV는 기록의 이름일 뿐 이 실습에서 실행할 세 가지 프로그램 작업이 아닙니다. 정상·경고도 실제 기기를 관찰한 판정이 아닙니다.
SpeedCheck의 입력 세 행
| 작업명 | 파일 크기(MB) | 행 수 | 처리 시간(초) | 상태 |
|---|---|---|---|---|
| Excel정리 | 20 | 10000 | 8 | 정상 |
| PowerQuery병합 | 80 | 50000 | 35 | 경고 |
| PythonCSV | 120 | 100000 | 22 | 정상 |
첨부의 입력 범위는 SpeedCheck!A1:E4입니다. 1행은 머리글이고 2~4행이 데이터입니다. C열의 10000·50000·100000은 각 기록에 적힌 숫자이며 이 통합문서가 가진 행 수가 아닙니다. D5는 입력 아래의 요약 셀이고 =MAX(D2:D4)가 들어 있습니다. 오른쪽 H:I 설명 영역도 CSV에 포함하지 않습니다.
Excel에서 최대값을 확인하는 순서
-
사본 XLSX를 열어 시트 이름이
SpeedCheck인지 확인합니다. -
A1:E4를 위 표와 대조하고 D2:D4가 순서대로 숫자 8·35·22인지 확인합니다.
-
D5의 수식 표시줄에서
=MAX(D2:D4)를 확인합니다. 범위에 D5 자신을 넣지 않습니다. -
세 수를 직접 읽어 가장 큰 35를 찾고 D5의 표시값과 대조합니다.
-
파일을 별도 이름으로 저장합니다. 값이 다르면 CSV로 옮기기 전에 아래 복구 절차를 적용합니다.
MAX 함수 | Microsoft Support는 MAX가 값 집합에서 가장 큰 값을 반환한다고 설명합니다. 이 수식의 확인 대상은 D2:D4의 세 숫자입니다. 값35에서 작업 성능이나 기기 상태에 관한 결론을 내리지 않습니다.
A1:E4만 CSV로 옮기기
새 통합문서의 A1에 SpeedCheck!A1:E4를 값으로 붙여넣고 그 시트만 UTF-8 CSV로 저장합니다. 저장 이름은 speed-check.csv입니다. 원래 XLSX 전체 시트를 CSV로 저장하면 D5 요약행과 오른쪽 설명이 함께 들어갈 수 있으므로 선택한 입력 범위만 새 시트에 옮깁니다. CSV 저장은 수식을 보존하는 단계가 아니므로 수식이 있는 원본 XLSX는 따로 보관합니다.

CSV 내용을 텍스트 편집기로 확인하면 다음처럼 머리글과 데이터 세 줄이 있어야 합니다. 숫자10000 안에는 천 단위 쉼표를 넣지 않습니다. 이 파일에서 쉼표는 열을 나누는 구분자입니다.
작업명,파일 크기(MB),행 수,처리 시간(초),상태
Excel정리,20,10000,8,정상
PowerQuery병합,80,50000,35,경고
PythonCSV,120,100000,22,정상
기존 파일을 열 수 없으면 원본을 덮어쓰지 말고 읽기 가능한 연습 폴더에 새 사본을 만듭니다. CSV를 고친 뒤에는 편집기에서 저장하고 다시 열어 이름과 내용을 확인합니다.
Python으로 CSV 데이터 행 수와 숫자 읽기
Python csv 문서는 reader 객체로 CSV 행을 읽는 방법을 설명합니다. 아래 코드를 check_speed_record.py로 저장하고, 두 파일이 있는 폴더의 터미널에서 python3 check_speed_record.py를 실행합니다.
import csv
headers = ["작업명", "파일 크기(MB)", "행 수", "처리 시간(초)", "상태"]
with open("speed-check.csv", encoding="utf-8-sig", newline="") as source:
reader = csv.DictReader(source)
if reader.fieldnames != headers:
raise ValueError("머리글 5개와 열 순서를 확인하세요")
rows = list(reader)
if len(rows) != 3:
raise ValueError("요약행을 빼고 데이터 3행만 저장하세요")
if any(None in row or None in row.values() for row in rows):
raise ValueError("행마다 CSV 필드가 5개인지 확인하세요")
times = [int(row["처리 시간(초)"]) for row in rows]
if times != [8, 35, 22]:
raise ValueError("이 연습의 시간은 순서대로 8, 35, 22입니다")
print("rows=" + str(len(rows)))
print("max_seconds=" + str(max(times)))
정상 입력의 예상 출력은 다음 두 줄입니다.
rows=3
max_seconds=35
이 검사는 요약표 CSV의 머리글·열 수·데이터3행·가상 시간값을 읽습니다. C열에 적힌 10000행짜리 원본 파일이나 별도 도구의 처리 결과를 검사하지 않습니다. Python에서 읽은 세 수의 최대값35와 Excel D5가 같으면 이 실습의 두 검산값이 일치한 것입니다.
잘못된 입력을 되돌리는 순서
| 증상 | 확인할 위치 | 복구와 다시 확인할 값 |
|---|---|---|
| D5가35와 다름 | D2:D4 숫자와 D5 수식 | 8·35·22와 MAX 범위를 복원하고35 확인 |
| 데이터3행 오류 | CSV 마지막 줄 | D5 요약행을 빼고 rows=3 확인 |
| 머리글 오류 | CSV 첫 줄 | 다섯 머리글과 순서를 예시대로 복원 |
| 숫자 변환 오류 | 처리 시간 열 | 35초 같은 문자를35로 고치고 max_seconds=35 확인 |
| 행마다 필드수 오류 | 해당 CSV 줄의 쉼표 | 추가 열/누락값을 바로잡고 다섯 필드 확인 |
D5가0이라면 숫자가 문자로 저장됐는지 확인하고 D2:D4를 숫자로 다시 입력합니다. 수식 표시줄에 값35만 있으면 계산식이 지워진 것이므로 =MAX(D2:D4)로 되돌립니다. 다른 값이 나올 때도 원본을 보존하고 해당 사본의 입력과 수식만 수정합니다.
Python이 파일을 찾지 못하면 터미널에서 명령을 실행한 폴더와 두 파일 이름을 확인합니다. 머리글을 고칠 때 데이터까지 한 칸 밀지 않도록 첫 줄부터 다시 대조합니다. 이 스크립트는 고정 연습값만 검증하므로 의도적으로 시간을 바꾼 경우에도 오류를 냅니다. 새로운 입력을 시험하려면 별도 사본과 새 기대값을 먼저 정해야 합니다.

완료 조건과 적용 한계
완료 조건은 XLSX입력3행, D5수식, 기대값35, CSV출력 rows=3과 max_seconds=35가 모두 맞는 것입니다. 하나라도 다르면 정상이라고 표시하지 말고 위 표의 해당 복구 경로로 돌아갑니다. 마지막에는 XLSX와 CSV, 사용한 Python 코드를 같은 연습 폴더에 보관해 어떤 파일을 검산했는지 남깁니다.
가상 시간값은 실제 실행 시간이나 측정 통계가 아닙니다. 이 표의 숫자로 도구의 우열, PC의 병목, 다음에 배울 도구를 결정할 수 없습니다. 실제 업무의 속도 측정은 동일한 입력·변환작업·출력·계측범위를 따로 정의하는 별도 과업입니다.
첨부의 셀 값·수식 문자열과 별도 산술 결과를 대조했습니다. 아래 Python 코드는 격리된 가상 CSV에서 정상 입력과 오류 입력을 확인했지만, Microsoft Excel 앱에서 직접 실행한 기록은 없습니다. Excel 쪽 결과는 위 순서로 자신의 사본에서 확인합니다.
출처 원문 수집일: S1 2026-09-23; S2 2026-09-23.