설비대장 CMMS 이전 준비: 엑셀에서 정리할 7가지

직접 해 본 결과

점검한 설비 합성 설비대장
300대
찾은 문제 심어 둔 문제 7종
69/69건
점검 시간 3,000대는 0.5초 이내
0.06초

이 글의 파일

CMMS(설비보전 관리 시스템)는 정비 작업의 일정을 세우고 관리·추적하는 전산 시스템입니다. 엑셀 설비대장을 CMMS로 옮기기 전에는 번호 중복, 표기 흔들림, 날짜·단위 형식, 상위설비(그 설비가 속한 더 큰 설비) 연결부터 정리해야 합니다. 합성 설비대장 300대에 흔한 문제 69건을 심고 점검 스크립트를 돌려 보니, 0.06초 만에 69건을 모두 찾았습니다.

시연 영상 점검 실행부터 템플릿까지 약 15초에 보여 줍니다. 실제 화면 캡처로 다시 구성했습니다.

이런 분께 / 준비물

엑셀로 설비대장을 관리하다 CMMS 도입을 앞두고 있는 보전·설비 담당자를 위한 글입니다.

  • 지금 쓰는 설비대장 엑셀 파일(사본으로 작업합니다)
  • 도입할 CMMS의 이관 양식(기존 데이터를 옮겨 넣도록 업체가 주는 양식). 있으면 먼저 받아 필수 항목을 맞춥니다.
  • 점검 스크립트를 쓰려면: Windows에 Python 설치(1단계에서 설명)
  • 스크립트 없이 눈으로 정리해도 됩니다. 아래 7가지를 체크리스트로 쓰면 됩니다.

정리할 7가지 한눈에 보기

번호·연결처럼 시스템의 뼈대가 되는 항목부터 고칩니다.

번호항목왜 문제인가고치는 방법
①설비번호 중복두 설비를 구분할 수 없음한쪽에 새 번호 부여
②상위설비 연결 오류설비 계층(라인 → 설비 → 부품)이 끊김없는 번호를 바로잡기
③필수값 누락시스템 필수 항목이 비면 등록이 막힐 수 있음설치일·위치 등 채우기
④설비유형 표기 흔들림같은 펌프가 펌프·PUMP·Pump로 나뉘어 통계가 틀어짐표준 이름으로 통일
⑤날짜 형식 섞임문자로 저장된 날짜(2019.03.01 등)는 날짜로 계산되지 않음날짜로 다시 입력
⑥용량 단위 섞임kW·HP·숫자만 섞이면 비교가 안 됨한 단위로 통일
⑦상태가 비고에 숨음폐기 설비가 가동 설비로 넘어감상태 열을 따로 만들기
7가지 정리 항목을 2단계 뼈대(설비번호 중복 4건, 상위설비 연결 오류 5건), 3단계 빈칸 채우기(필수값 누락 15건), 4단계 표기·형식 통일(설비유형 18건, 날짜 12건, 용량 9건, 상태 6건)로 묶은 순서도
고치는 순서. 건수는 합성 설비대장 300대에 일부러 심어 둔 문제 수입니다.

1단계 스크립트로 정리할 곳 먼저 찾기

고치기 전에 check_ledger.py로 7가지 문제가 어디 있는지 목록부터 뽑습니다.

  1. Python을 설치합니다. 공식 문서가 권장하는 ’Python install manager’를 python.org 또는 Microsoft Store에서 받습니다.
  2. 명령 프롬프트(글자로 명령을 입력하는 창)를 엽니다. 시작 메뉴에서 cmd를 검색하면 나옵니다.
  3. pip(파이썬 부품을 설치하는 도구)으로 엑셀 파일을 다루는 부품 openpyxl을 설치합니다.
python -m pip install openpyxl
  1. check_ledger.py와 설비대장 사본을 한 폴더에 둡니다.
  2. 명령 프롬프트에서 그 폴더로 이동합니다. 파일 탐색기 주소창의 경로를 복사해 cd /d 뒤에 붙여 넣고 Enter를 누릅니다. /d를 붙이면 다른 드라이브여도 됩니다. 네트워크 폴더에 있는 파일은 내 PC로 복사한 뒤 실행합니다.
  3. 설비대장 파일 이름을 넣어 실행합니다. 파일 이름에 띄어쓰기가 있으면 따옴표로 감쌉니다.
python check_ledger.py "설비대장 사본.xlsx"
명령 프롬프트에서 check_ledger.py를 실행한 화면. 설비 300대 검사, 정리할 곳 73건, 0.06초와 항목별 건수가 표시된다
실제 실행 화면. 설비번호 중복 4건은 두 행을 모두 보고해 8건으로 나오므로 합계가 73건입니다.

같은 폴더에 정리필요목록.xlsx가 생깁니다. 행, 설비번호, 항목, 현재값, 제안이 한 줄씩 들어 있습니다. ’필수값 누락’은 현재값 칸에 빠진 열 이름이 들어갑니다.

엑셀에서 연 정리필요목록.xlsx. 행, 설비번호, 항목, 현재값, 제안 열에 EQ-0047 설비번호 중복, EQ-0050 날짜 형식 같은 항목이 한 줄씩 있다
스크립트가 만든 정리필요목록. 위에서부터 하나씩 고치면 됩니다.
  • 회사 기준에 맞추려면 check_ledger.py를 메모장으로 엽니다(마우스 오른쪽 버튼 → 연결 프로그램 → 메모장. 더블클릭하면 실행될 수 있습니다).
  • 위쪽에서 ‘열 이름 설정(COLUMNS)’, ‘비면 안 되는 열’, ‘설비유형 표준 이름’, ‘용량 표기 규칙’ 줄을 고칠 수 있습니다.

2단계 뼈대부터: 번호와 상위설비 (①②)

설비번호는 중복이 없어야 하고, 상위설비 칸의 번호는 대장에 실제로 있어야 합니다.

  • 예를 들어 모터의 상위설비는 그 모터가 달린 컨베이어입니다.
  • 중복 번호가 있으면 어느 쪽이 맞는지 현장에서 확인하고, 다른 쪽에 새 번호를 줍니다.
  • 스크립트는 앞뒤 공백·대소문자만 다른 번호(P-001과 ’p-001 ’)도 중복으로 봅니다. 시스템에 옮기면서 같은 번호로 바뀔 수 있기 때문입니다.
  • 상위설비 번호가 대장에 없다면 오타이거나, 상위 설비가 대장에서 빠진 경우입니다.

3단계 비면 안 되는 칸 채우기 (③)

설비번호·설비명·유형·위치·설치일·중요도 6개 칸은 비우지 않습니다.

  • 이 6개는 이 글의 스크립트가 필수로 보는 칸입니다. 도입할 CMMS의 필수 항목에 맞춰 스크립트 위쪽 ‘비면 안 되는 열’ 줄을 고칩니다.
  • 설치일을 모르면 ’추정’임을 비고에 남기고 연도만이라도 채웁니다.

4단계 표기와 형식 통일하기 (④~⑦)

설비유형·날짜·용량·상태를 한 가지 표기로 통일합니다.

  • 설비유형: 표준 이름 목록을 정하고, 나머지 표기는 모두 그중 하나로 바꿉니다.
  • 날짜: 문자로 저장된 날짜(2019.03.01, 19/03/01 등)는 정렬·기간 계산에 쓸 수 없습니다. 2019-03-01처럼 다시 입력해 엑셀이 날짜로 알아보게 합니다.
  • 용량: 한 단위로 통일합니다. 단위를 머리글로 올리고(예: 용량(kW)) 칸에는 숫자만 적으면 섞이지 않습니다.
  • 상태: 비고에 ’폐기’처럼 적어 둔 내용은 ‘상태’ 열로 옮깁니다.

다 고쳤으면 1단계 스크립트를 한 번 더 돌려 남은 곳이 없는지 확인합니다.

5단계 다시 흐트러지지 않게 템플릿 쓰기

정리한 뒤에는 입력 단계에서 막아야 다시 흐트러지지 않습니다.

정리 템플릿은 엑셀의 데이터 유효성 검사(칸에 넣을 수 있는 값을 제한하는 기능)로 이렇게 막습니다.

  • 설비유형·상태·중요도는 드롭다운 목록에서만 고릅니다.
  • 설치일 칸에는 날짜만, 용량 칸에는 숫자만 들어갑니다.
  • 드롭다운 목록은 ‘목록’ 시트에서 고칩니다(설비유형 5칸, 상태 4칸).
  • 칸을 늘리면 데이터 유효성 검사의 원본 범위와 스크립트의 ‘설비유형 표준 이름’ 줄도 함께 고칩니다.
  • 이 템플릿으로 만든 파일에도 1단계 스크립트를 그대로 쓸 수 있습니다(상태 열이 있으면 비고 검사는 건너뜀).
정리 템플릿의 설비대장 시트. 설비번호부터 비고까지 12개 머리글이 있고, 설비유형 열의 C3 칸 옆에 드롭다운 단추가 보인다
정리 템플릿. 설비유형·상태·중요도 칸은 드롭다운 목록에서만 고를 수 있습니다.

직접 만들 때는 데이터 탭 → 데이터 유효성 검사 → 제한 대상 ‘목록’ → 원본에 목록 범위를 지정합니다(Microsoft 안내 기준).

직접 해 본 결과

가상 공장(라인 4개)의 설비 300대로 합성 설비대장을 만들었습니다. 회사 자료는 쓰지 않았고, 제조사 이름도 가상입니다.

Windows 11, Python 3.14.4, openpyxl 3.1.5. 300대 3회 0.06초, 3,000대 3회 0.45~0.49초
심어 둔 문제건수스크립트가 찾은 건수
설비유형 표기 흔들림1818
설치일 누락1515
날짜 형식 섞임1212
용량 단위 섞임99
상태가 비고에 있음66
상위설비 없음55
설비번호 중복44
측정 조건 Windows 11, Python 3.14.4, openpyxl 3.1.5. 300대 3회 0.06초, 3,000대 3회 0.45~0.49초 측정일
  • 심어 둔 69건을 모두 찾았습니다.
  • 번호 중복은 두 행이 같은 번호를 쓰므로 양쪽 행을 모두 보고합니다. 그래서 총 보고 건수는 73건입니다.
  • 템플릿은 엑셀 2010에서 드롭다운·날짜 검사가 걸린 것을 확인했고, 예시 3행에 심은 문제 4가지를 스크립트가 모두 찾았습니다.
  • 까다로운 입력 17가지로도 돌려, 멈추지 않고 이유를 알려 주도록 고쳤습니다.

주의할 점과 한계

  • 합성 데이터에는 일부러 심은 문제만 있습니다. 실제 설비대장에는 스크립트 규칙 밖의 문제(설비명 오타, 위치 체계 자체의 차이 등)가 더 있을 수 있습니다.
  • 스크립트는 첫 번째 시트, 첫 행 머리글을 기준으로 읽습니다.
  • 병합 셀은 맨 위 칸에만 값이 있어 나머지는 ’필수값 누락’으로 나옵니다. 병합을 풀고 값을 채운 뒤 검사합니다.
  • 템플릿에 잘못된 값을 넣었을 때 막히는 화면은 직접 확인하지 않았습니다.

자주 묻는 질문

설비가 수천 대인데 스크립트가 버틸까요?

합성 설비대장 3,000대도 0.5초 안에 끝났습니다.

우리 회사 설비대장은 열 이름이 다릅니다.

스크립트 위쪽 '열 이름 설정'에 회사 머리글을 추가합니다(예: '설비번호': ['설비번호', '설비코드']). 설비번호부터 비고까지 9개 머리글이 모두 있어야 하고(빈 열이어도 됨), 머리글은 1행에 있어야 합니다. 제목 행이 있으면 사본에서 지웁니다.

정리는 엑셀에서 끝내고 옮겨야 하나요, 옮긴 뒤 고쳐도 되나요?

옮기기 전에 정리하는 편이 낫습니다. 번호와 상위설비는 다른 데이터가 연결되는 기준이라, 옮긴 뒤에 고치면 연결된 기록까지 함께 확인해야 할 수 있습니다.

근거와 출처

직접 해 본 근거

  • 직접 캡처 점검 스크립트 실행 화면, 정리필요목록, 정리 템플릿을 엑셀 2010과 명령 프롬프트에서 직접 캡처했습니다. 시연 영상은 이 캡처로 다시 구성했습니다.
  • 직접 측정 합성 설비대장(설비 300대)에 문제 69건을 심고 점검 스크립트로 찾았습니다. 69건 모두 찾았고, 300대 검사에 0.06초, 3,000대로 늘려도 0.5초 이내였습니다.
  • 결과 파일 정리 템플릿(드롭다운·날짜 검사 포함)과 점검 스크립트를 내려받을 수 있습니다. 템플릿은 엑셀 2010에서 드롭다운·날짜 검사 규칙이 적용된 것을 확인했고, 템플릿에 입력한 예시에 스크립트를 돌려 심어 둔 문제를 모두 찾았습니다.

참고한 출처