본문 바로가기
책상 노트 책상 노트
실무자가 실제로 굴려본 업무도구·업무 자동화 기록

일수만 입력하면 움직이는 공정표로 바꾸기까지

읽는 시간 약 11분

손으로 색칠해야 움직이던 공정표였습니다

시공업 실무에서 쓰던 엑셀 파일 하나를 다시 만들었습니다. 파일 이름은 계획서였지만 실제 내용은 공정표와 일정표에 가까웠습니다. 현장마다 파일을 복사한 뒤 날짜를 바꾸고, 일정에 맞춰 공정 칸을 사람이 직접 색칠해 쓰고 있었습니다.

이번에 정한 기준은 단순했습니다. 시작일과 공정별 일수만 입력하면 나머지가 따라 움직여야 했습니다. 날짜 헤더와 공사기간이 바뀌고, 공정바도 자동으로 다시 그려지는 구조입니다. 보기 좋은 표보다 다시 그리지 않아도 되는 표를 만드는 쪽에 무게를 뒀습니다.

완성본에서는 시작일 한 칸과 공정별 일수만 손댑니다. 종료일, 총 공사기간, 날짜별 공정바는 수식과 조건부서식이 계산합니다. 사람이 하던 색칠 작업을 엑셀이 맡게 한 셈입니다.

고치기 전에는 날짜가 바뀔 때마다 다시 그렸습니다

기존 양식의 내용이 틀린 것은 아니었습니다. 문제는 일정이 바뀔 때마다 사람이 같은 일을 반복해야 한다는 점이었습니다.

  • 날짜를 바꾼 뒤 공정 칸을 손으로 다시 색칠했습니다.
  • 진한 주황과 분홍 채움이 넓게 들어가 인쇄할 때 토너를 많이 썼습니다.
  • 폰트가 두세 종류 섞여 있어 특정 글꼴이 없는 PC에서는 모양이 달라졌습니다.
  • 격자선이 그대로 보여 일정표보다 빽빽한 입력지처럼 보였습니다.

처음에는 색과 테두리만 정리하면 될 줄 알았습니다. 막상 손을 대보니 디자인을 바꾸는 것만으로는 반복 작업이 줄지 않았습니다. 날짜가 바뀔 때마다 다시 칠해야 한다면 새 양식도 오래 쓰기 어렵다고 판단했습니다.

먼저 입력할 칸과 자동으로 움직일 칸을 나눴습니다

사람이 입력하는 값은 시작일과 공정별 일수로 줄였습니다. 나머지는 그 값을 기준으로 계산되게 만들었습니다.

  • 일수 열에 숫자를 넣으면 각 공정의 시작일과 종료일이 연쇄로 계산됩니다.
  • 계산된 날짜를 기준으로 공정바가 자동으로 표시됩니다.
  • 상단 공사기간과 총 일수도 함께 바뀝니다.
  • 작성일은 TODAY 함수로 들어갑니다.
  • 시작일을 바꾸면 날짜 헤더와 전체 일정이 한꺼번에 이동합니다.

인쇄 설정은 A4 가로 한 장에 맞췄고, 공정명이 있는 왼쪽 열을 고정했습니다. 이때부터 파일을 복사해서 다시 그리는 일이 아니라, 필요한 값만 바꿔 다시 쓰는 양식에 가까워졌습니다.

첫 시안은 토너를 아꼈지만 일정이 보이지 않았습니다

첫 버전은 채움을 5~8퍼센트 농도의 옅은 색으로 통일했습니다. 넓은 면을 진하게 칠하지 않고 얇은 테두리로 구분했습니다. 주말에는 옅은 회색 음영을 넣고 토요일과 일요일 글자만 파랑과 빨강으로 표시했습니다.

인쇄 부담은 줄었지만 공정바까지 너무 옅었습니다. 표를 펼쳤을 때 어느 날짜에 어떤 공정이 잡혀 있는지 바로 보이지 않았습니다. 결국 공정바만 농도를 올리고 헤더와 주말 배경은 옅게 남겼습니다. 실제로 색이 들어가는 면적이 표 전체의 일부라 원본보다 토너 사용량도 줄일 수 있었습니다.

토너를 덜 쓰면서 일정이 보이게 맞췄습니다
첫 시안은 너무 옅어서 버리고 공정바만 농도를 올렸습니다.

자동화한 뒤에는 조건부서식에서 막혔습니다

서로 다른 공정 색이 전부 회색으로 저장됐습니다

공정별로 다른 색을 지정했는데 파일을 저장하고 다시 열면 전부 회색으로 나왔습니다. 처음에는 주말 음영 규칙이 공정 색을 덮는다고 생각해 우선순위부터 확인했습니다. 원인은 다른 곳에 있었습니다.

openpyxl로 조건부서식을 만들 때 채움 객체가 규칙 사이에서 공유되고 있었습니다. 서로 다른 색을 넣은 규칙이 마지막에 지정한 색 하나로 저장된 것입니다. 규칙마다 독립된 색 객체를 새로 만들어 넣은 뒤에야 공정별 색이 유지됐습니다.

비슷한 문제가 테두리에서도 생겼습니다. 왼쪽 정보열의 가로선이 사라지고 세로선이 헤더 아래에서 끊겼습니다. 셀마다 테두리 객체를 따로 만든 뒤 다시 그렸고, 화면과 인쇄물에서 선이 보이도록 색 농도도 한 번 더 조정했습니다.

주말 글자색이 공사가 없는 날에만 들어갔습니다

토요일과 일요일 글자색도 한 번에 끝나지 않았습니다. 공사가 없는 주말에는 색이 들어갔지만 공정바가 표시된 주말은 검정 글자로 남았습니다.

토요일과 일요일 글자색 규칙은 우선순위 39번과 40번에 있었습니다. 앞쪽 공정바 규칙이 조건을 만족하면 평가를 멈추도록 되어 있어, 공사가 잡힌 날짜는 주말 규칙까지 도달하지 못했습니다.

글자색 규칙을 우선순위 1번과 2번으로 올렸습니다. 이 규칙은 채움을 건드리지 않기 때문에 먼저 적용해도 공정바에는 영향을 주지 않았습니다. 수정한 뒤 PDF에서 색상값을 추출해 확인했고, 토요일 다섯 칸과 일요일 네 칸에 지정한 색이 모두 들어갔습니다.

색이 회색으로 저장되는 원인을 찾기까지
며칠에 걸쳐 같은 증상이 계속 나왔습니다.

직접 손본 서식은 다시 저장하지 않고 필요한 값만 바꿨습니다

작업 중간에는 엑셀에서 파일을 직접 열어 폰트와 테두리 색을 손봤습니다. 그 상태에서 스크립트로 파일 전체를 다시 만들면 수작업으로 조정한 부분이 사라질 수 있었습니다.

엑셀 COM으로 필요한 부분만 수정하려 했지만 원하는 방식으로 처리되지 않았습니다. 결국 엑셀 파일 내부의 styles.xml에서 대상 색상값만 골라 바꿨습니다. 공정바와 헤더 색칠 칸의 테두리 색 24개를 검정으로 바꾸면서 셀 구조, 조건부서식 규칙, 비워둔 입력란은 그대로 보존했습니다. 성격이 다른 오늘 날짜 마커 선은 수정 대상에서 제외했습니다.

파일이 엑셀에서 열려 있어 저장이 막힌 적도 여러 번 있었습니다. 엑셀 프로세스가 여러 개 떠 있어 어느 창이 대상 파일인지 확인하기 어려웠기 때문에 강제로 닫지 않고 기다렸습니다. 각 단계에서는 원본을 덮어쓰지 않고 백업 파일을 따로 남겼습니다.

만들었다가 뺀 기능도 많았습니다

날짜 헤더를 공정 색으로 채우는 기능

날짜와 요일 칸에도 그날 진행되는 공정 색이 자동으로 들어가게 만들었습니다. 계산은 정상적으로 움직였지만 인쇄하면 상단이 지나치게 알록달록했습니다. 기능은 남길 수 있었지만 읽는 데 도움이 되지 않아 뺐습니다. 지금은 흰 배경에 주말 글자색만 남아 있습니다.

하단 여백을 채우던 여러 정보란

공정표 아래에 공간이 남아 주요 연락처, 현장 기본정보, 작업시간, 협의사항, 승인 서명란을 넣어봤습니다. 제출용 문서라면 연락처가 필요하고 내부 관리용이라면 협의 기록이 필요했습니다. 둘을 모두 넣으니 종이는 찼지만 문서의 용도는 오히려 흐려졌습니다.

정해진 항목은 모두 빼고 메모란 하나만 남겼습니다. 예전에 진행사항을 별도 파일로 관리한 적이 있었는데, 본문과 떨어진 파일은 결국 아무도 열지 않는 문서가 됐습니다. 같은 공정표 안에 메모 공간이 있으면 일정을 보다가 바로 적을 수 있습니다. 메모 헤더와 기입용 밑줄만 넣어 인쇄 부담도 늘리지 않았습니다.

범례와 네 가지 공정 색

처음에는 공정을 네 그룹으로 묶고 아래에 색상 범례를 붙였습니다. 공정명이 표 왼쪽에 이미 있어 범례는 같은 정보를 한 번 더 보여줬고, 한 그룹에 여러 공정이 들어가면 같은 색이 반복돼 구분도 어려웠습니다.

범례는 제거했습니다. 열 개 공정에는 각각 다른 색을 주되 비슷한 성격의 공정은 같은 계열 안에서 명도를 달리했습니다. 공사가 뒤로 진행될수록 색이 진해지도록 순서도 바꿨습니다.

공정 구성이 다른 현장이라면

이 양식이 그대로 맞는 건 공정 목록과 순서가 저희와 비슷한 현장까지입니다. 저희가 쓰는 열 개 공정 순서는 지금까지 맡아온 현장 형태에 맞춰진 것이라, 공정 구성이 크게 다른 현장이라면 공정 행 자체를 새로 짜야 합니다. 행을 통째로 지우거나 순서를 바꾸면 연쇄로 계산되던 시작일과 종료일 수식이 어긋나는 경우가 있어서, 공정을 바꿀 때는 수식이 참조하는 셀 범위를 같이 확인하는 절차를 안내에 넣었습니다.

파일을 여는 프로그램도 변수입니다. 조건부서식과 스타일이 촘촘하게 걸려 있어서, 엑셀이 아닌 다른 프로그램으로 열면 서식이 깨지는 경우를 몇 번 봤습니다. 엑셀이 아닌 프로그램을 쓰는 현장이라면 넘기기 전에 미리 테스트해보라고 안내하고 있습니다.

자동화한 뒤에 남은 손질

수식으로 대부분을 넘긴 뒤에도 손이 가는 지점이 완전히 사라지지는 않았습니다. 공정 하나를 중간에 새로 끼워 넣어야 하는 경우, 그러니까 예정에 없던 작업이 현장에서 추가되는 경우에는 행을 삽입하고 그 행에도 앞뒤 공정과 이어지는 수식을 새로 걸어줘야 합니다. 자동으로 움직이는 건 이미 짜여 있는 공정 사이의 날짜 계산이지, 공정 목록 자체를 늘리고 줄이는 일까지는 아니었습니다. 이 부분은 아직 사람이 손으로 하고 있습니다.

최종본에서 사람이 하는 일은 두 가지입니다

최종본을 쓸 때 사람이 바꾸는 것은 시작일과 공정별 일수입니다. 시작일을 옮기면 날짜 헤더와 전체 일정이 이동하고, 일수를 바꾸면 뒤 공정의 시작일과 종료일이 다시 계산됩니다. 그 결과에 맞춰 공정바도 자동으로 늘어나거나 줄어듭니다.

왼쪽 정보열은 필요한 항목이 보일 정도로 줄이고 날짜 영역은 넓혔습니다. 전체 폭은 A4 가로 한 장을 벗어나지 않게 맞췄습니다. 입력할 칸과 자동 계산되는 칸이 구분되니 처음 보는 사람도 어디를 손대야 하는지 전보다 알아보기 쉬워졌습니다.

손으로 색칠하던 공정표를 자동 계산 양식으로 바꾼 전후 비교
날짜와 공정바를 다시 그리는 대신 시작일과 일수만 입력하도록 바꿨습니다.

보기 좋은 표보다 다시 그리지 않는 표가 오래 남았습니다

이번 작업에서 디자인은 필요했지만 중심은 아니었습니다. 색을 옅게 하고 폰트를 통일해도 사람이 매번 날짜와 공정바를 다시 그려야 한다면 오래 쓰기 어려운 양식이라는 점은 달라지지 않았습니다.

시작일과 일수만 입력하도록 구조를 바꾼 뒤에야 공정표가 일정 변경을 따라 움직였습니다. 넣을 수 있는 기능도 여러 개 만들었지만 읽는 데 도움이 되지 않거나 문서의 용도를 흐리는 기능은 다시 뺐습니다.

최종적으로 남은 것은 적은 입력칸, 자동으로 계산되는 날짜, 일정에 맞춰 움직이는 공정바, 그리고 바로 기록할 수 있는 메모란입니다. 이 네 가지가 손으로 다시 그리던 공정표를 반복해서 쓸 수 있는 양식으로 바꿨습니다.

이어서 읽을 기록

책상 노트 운영자
함께 보면 좋은 글
error: Content is protected !!