빨간 글씨만 봐도 마음이 급해지는 이유
자동화 스크립트를 처음 돌려보거나 엑셀 매크로를 실행했을 때, 화면에 빨간 글씨나 팝업창이 뜨면 대부분의 비전공자는 일단 겁을 먹습니다. 무엇이 잘못됐는지 알 수 없으니 “저는 코딩이랑 안 맞나 봐요”라는 결론으로 바로 넘어가는 경우도 많습니다.
하지만 에러 메시지는 사실 프로그램이 우리에게 보내는 가장 친절한 신호입니다. “여기가 문제입니다”라고 정확한 위치와 이유를 알려주는 셈인데, 문제는 그 메시지가 영어와 낯선 용어로 되어 있어서 읽는 법을 모른다는 것뿐입니다. 비전공 사무직을 위한 코딩 입문 로드맵에서 다룬 것처럼, 학습의 시작이 반복 업무 자동화라면 그 과정에서 에러를 마주하는 것은 필연입니다. 이 글에서는 파이썬과 엑셀에서 자주 만나는 에러 메시지를 어떻게 읽고, 어디서부터 원인을 좁혀가는지 정리합니다.
파이썬 에러 메시지, 아래에서부터 읽으세요
파이썬 에러는 보통 “트레이스백(Traceback)“이라는 형태로 여러 줄에 걸쳐 출력됩니다. 처음 보면 줄이 많아서 압도되지만, 읽는 순서만 알면 생각보다 단순합니다.
Traceback (most recent call last):
File "merge_excel.py", line 12, in <module>
df = pd.read_excel(file_path)
File "C:\Python\pandas\io\excel.py", line 300, in read_excel
...
FileNotFoundError: [Errno 2] No such file or directory: '매출자료.xlsx'
이 메시지를 읽는 핵심 규칙은 하나입니다. 맨 아래 줄이 결론이고, 위쪽은 그 결론까지 오게 된 과정입니다. 위 예시에서 가장 아래 줄을 보면 FileNotFoundError: 매출자료.xlsx라고 되어 있습니다. 즉 “그 이름의 파일을 찾을 수 없다”는 뜻입니다. 파일명 오타, 다른 폴더에 있는 파일, 또는 확장자가 다른 경우가 원인일 가능성이 큽니다.
그 위에 있는 line 12, in <module> 부분은 “내가 작성한 코드에서 몇 번째 줄에서 문제가 시작됐는지”를 알려줍니다. pandas 내부 코드까지 자세히 볼 필요는 없고, 보통 내가 작성한 파일 이름(merge_excel.py)이 언급된 줄만 확인하면 됩니다.
정리하면 파이썬 에러를 읽을 때는 다음 순서로 시선을 옮기면 됩니다.
- 맨 아래 줄의 에러 종류와 메시지 확인 (무엇이 문제인지)
- 내가 작성한 파일명이 나오는 줄 확인 (어디서 문제인지)
- 그 줄의 코드를 실제로 열어서 확인 (왜 문제인지)
자주 만나는 에러 유형 다섯 가지
실무에서 엑셀 자동화 스크립트를 만들다 보면 특정 에러가 반복해서 등장합니다. 미리 익혀두면 당황하는 시간이 줄어듭니다.
FileNotFoundError: 파일 경로나 이름이 틀렸을 때. 경로에 한글이나 공백이 있으면 더 자주 발생합니다.KeyError: 엑셀 컬럼명이나 딕셔너리 키를 잘못 입력했을 때.df['매출액']인데 실제 컬럼명이df['매출 액']처럼 공백이 다르면 발생합니다.TypeError: 문자와 숫자를 잘못 섞어 연산했을 때. 엑셀에서 숫자처럼 보이는 셀이 실제로는 텍스트로 저장된 경우 흔합니다.IndentationError: 파이썬은 들여쓰기로 코드 블록을 구분하는데, 스페이스와 탭이 섞이면 발생합니다.PermissionError: 파일이 다른 프로그램(엑셀 등)에서 열려 있어 스크립트가 접근하지 못할 때 발생합니다.
이 중 KeyError와 TypeError는 데이터 클렌징 과정에서 원본 데이터가 지저분할 때 특히 자주 마주치는 에러입니다. 컬럼명에 공백이 섞여 있거나, 숫자 컬럼에 텍스트가 하나라도 섞여 있으면 에러가 발생하므로, 에러 메시지를 읽는 습관은 곧 데이터 상태를 점검하는 습관과 이어집니다.

엑셀에서 만나는 오류 값도 같은 원리입니다
엑셀도 파이썬만큼이나 다양한 오류 값을 보여줍니다. #N/A, #REF!, #VALUE!, #DIV/0! 같은 표시를 본 적이 있을 텐데, 이것도 파이썬 에러처럼 “이유가 정해진 신호”입니다.
#N/A: VLOOKUP이나 XLOOKUP에서 찾는 값이 범위에 없을 때#REF!: 수식이 참조하던 셀이나 행이 삭제되었을 때#VALUE!: 숫자 연산에 텍스트가 섞여 있을 때#DIV/0!: 0으로 나누기를 시도했을 때
예를 들어 여러 시트의 데이터를 SUMIF, SUMIFS로 자동 합산하다가 #VALUE!가 뜬다면, 합산 대상 범위 안에 숫자가 아닌 텍스트 셀이 하나라도 섞여 있다는 뜻입니다. 파이썬의 TypeError와 원인이 거의 같습니다. 결국 도구가 다를 뿐, “어떤 규칙이 깨졌는지 알려주는 신호”라는 본질은 동일합니다.
에러를 마주했을 때의 실전 대응 순서
에러 메시지를 읽을 줄 알게 되면, 그다음은 대응 순서를 습관화하는 것이 중요합니다.
- 에러 메시지의 마지막 줄을 그대로 복사해서 검색해봅니다. 대부분의 경우 같은 문제를 겪은 사례가 존재합니다.
- 에러가 발생한 줄 바로 위 코드에서 변수 이름, 파일 경로, 컬럼명에 오타가 없는지 확인합니다.
- 문제가 재현되는 최소 단위로 코드를 줄여봅니다. 전체 스크립트를 한 번에 돌리지 말고, 문제가 되는 줄만 따로 실행해보면 원인이 훨씬 빨리 드러납니다.
- 원인을 찾았다면 어떤 상황에서 이 에러가 났는지 짧게 기록해둡니다. 나중에 같은 에러를 또 만났을 때 훨씬 빨리 해결할 수 있습니다.
특히 4번 습관은 자동화 스크립트를 오래 유지보수할 때 큰 차이를 만듭니다. 자동화 로그 작성법에서 다룬 것처럼, 에러가 났던 상황과 해결 방법을 함께 남겨두면 같은 실수를 반복하지 않고, 다른 사람이 같은 스크립트를 이어받았을 때도 빠르게 파악할 수 있습니다.
에러는 실력이 없다는 증거가 아닙니다
현업 개발자들도 하루에 수십 번씩 에러 메시지를 마주합니다. 다른 점은 에러 메시지를 두려워하지 않고 “정보”로 받아들인다는 것뿐입니다. 비전공자가 자동화나 코딩을 배울 때 가장 먼저 넘어야 할 심리적 장벽도 바로 이 지점입니다. 에러가 뜨는 것은 코드가 잘못됐다는 신호일 뿐, 학습자의 능력이 부족하다는 의미가 아닙니다.
처음에는 에러 메시지 한 줄을 읽는 데도 시간이 걸리지만, 몇 번 반복하면 어떤 부분을 먼저 봐야 할지 감이 잡힙니다. 그 감각이 쌓이면 자동화 스크립트를 스스로 고치고 개선하는 속도도 눈에 띄게 빨라집니다.
픽셀앤코드는 경기 양주 지역의 중소기업과 공공기관을 대상으로 비전공자 실무자를 위한 코딩·자동화 교육을 진행하면서, 이런 에러 대응 습관을 실습 위주로 함께 다루고 있습니다. 스크립트를 만드는 법뿐 아니라 문제가 생겼을 때 스스로 원인을 찾아가는 방법까지 익히고 싶은 실무자라면, 필요한 시점에 교육 서비스를 참고해보셔도 좋습니다.