업무

엑셀 시트 참조 날짜 일괄 수정

닦윤 2024. 4. 3. 12:45

기존 양식은 word 파일이었는데, 먼저 날짜와 요일을 자동화하고 싶었고
그리고 달마다 28~31개의 word 파일을 생성해 보관하는 것보다,
엑셀 파일 하나에 시트 28~31개로 보관하는 게 용량이나 관리 측면에서 편할 것 같아 엑셀 양식으로 변환하려고 합니다.

처음에는 첫번째 시트만 2024-04-01 날짜 형식으로 입력해두고
이후 시트에서는 직전 시트를 참조해 1을 더해 날짜와 요일이 자동으로 수정하고,
이후 달이나 년이 바뀔 때 첫번째 시트의 년, 월만 수정해주면 이후 시트는 일괄 수정되도록 했습니다.

그런데 한 시트를 수정하고 나머지 시트에 그대로 적용하기 위해 복붙하다보니
날짜에 적용한 함수가 그대로 복사돼 날짜를 다시 손봐야 하는 경우가 생기는 불편한 점을 발견했습니다.

그래서 첫 시트의 날짜만 수정하면 나머지 시트도 수정되면서 또한

이후에 시트의 형태나 내용을 수정하고서 시트별로 복붙해 적용할 때
날짜를 또 다시 손 댈 필요가 없도록 하고 싶었습니다.

그래서 먼저 시트 이름을 날짜로(1, 2, 3, ..., 31) 만들고, 날짜 란에 시트 이름을 참조하는 방식을 고민했습니다.
즉 모든 시트의 날짜 란은 첫번째 시트의 날짜란과 자신의 시트 이름을 참조해 날짜가 정해지도록 하는 것입니다.


먼저 년도와 달은 매번 변경될 것이니, 1번 시트에서 참조하도록 해서
YEAR(), MONTH() 함수를 사용하고 일자는 SHEET() 함수로 시트 이름을 참조했습니다.
그래서 이 데이터들을 DATE() 함수의 매개변수로 넣어 날짜형식으로 출력되도록 했습니다.

다시 생각해보니, 1번 시트의 날짜를 참조하고 현재 시트 이름에서 1을 뺀 뒤 이를 빼는 방식으로도 됐을 것 같습니다.

='01'!H7+SHEET()-1


결과적으로 01 시트만 수동으로 날짜를 지정하고, 이후 시트의 날짜란은 모두 동일한 수식을 가져

01 시트를 제외한 어떤 시트의 날짜를 복사 붙여넣기 하더라도 시트이름(날짜)에 해당하는 값이 반환될 것입니다.


뭔가 너무 돌아온 느낌..