날짜가 4년 1일씩 밀렸을 때, 수식보다 먼저 봐야 할 ‘1904 날짜 체계’
얼마 전 정산 파일을 합치다가 이상한 장면을 봤습니다. 거래일이 분명 2026년 6월이어야 하는데, 일부 행만 2022년 6월로 내려가 있었습니다. 월은 비슷하고 일자도 얼핏 맞아 보이는데 연도만 4년 정도 빠져 있으니 처음에는 단순 입력 오류라고 생각하기 쉽습니다. 그런데 문제는 한두 건이 아니라 특정 파일에서 복사해 온 날짜 열 전체가 똑같이 밀려 있었다는 점이었습니다.
이런 경우에는 DATE 함수나 표시 형식부터 만지기 전에, 엑셀 파일 자체의 날짜 기준이 서로 다른지 확인하는 편이 빠릅니다. 특히 맥에서 만든 오래된 양식, 외부 시스템에서 내려받은 파일, 여러 부서가 돌려 쓰는 정산 템플릿에서 가끔 만나는 증상입니다. 결론부터 말하면 원인은 ‘1904 날짜 체계’였습니다.

날짜는 맞게 보이는데, 복사해 오면 갑자기 과거로 간다
처음 발견한 증상은 단순했습니다. A파일에서는 주문일이 2026-06-25로 정상 표시됩니다. 그런데 이 날짜 열을 B파일의 원장에 붙여넣으면 2022-06-24처럼 보입니다. 단순히 4년 전이 아니라 하루까지 어긋나서 더 헷갈립니다.
이때 흔히 하는 실수는 셀 서식을 계속 바꾸는 것입니다. 날짜 형식을 yyyy-mm-dd로 바꿔 보고, 일반 형식으로 바꿔 보고, 텍스트 나누기까지 해보지만 날짜 자체가 잘못된 일련번호로 들어온 상태라면 표시 형식은 해결책이 아닙니다. 엑셀 날짜는 겉으로는 날짜처럼 보여도 내부적으로는 숫자입니다. 예를 들어 2026-06-25라는 날짜는 어떤 기준일로부터 며칠이 지났는지를 나타내는 일련번호로 저장됩니다.
| 확인 항목 | 정상 파일 | 문제 파일 | 의심 포인트 |
|---|---|---|---|
| 셀 표시 | 2026-06-25 | 2022-06-24 | 날짜가 4년 1일 차이 |
| 셀 서식 | 날짜 | 날짜 | 서식 문제가 아닐 가능성 |
| 일련번호 | 46298 근처 | 44836 근처 | 차이가 1462 |
| 파일 옵션 | 1904 날짜 체계 해제 | 1904 날짜 체계 사용 | 통합 문서 기준 차이 |
차이가 항상 1462일인지 먼저 찍어 봤다
원인을 좁힐 때는 전체 데이터를 바로 고치지 말고, 샘플 몇 개로 차이를 계산해 보는 것이 좋습니다. 정상 파일의 날짜와 문제 파일의 날짜가 같은 거래를 가리킨다면 옆 열에 단순 뺄셈을 해봅니다.
=정상날짜셀-문제날짜셀여기서 결과가 대부분 1462로 나오면 1904 날짜 체계 문제일 가능성이 큽니다. 엑셀에는 대표적으로 1900 날짜 체계와 1904 날짜 체계가 있습니다. 두 체계의 기준 차이가 1462일이라서, 서로 다른 날짜 체계를 쓰는 통합 문서 사이에서 날짜를 옮길 때 4년 1일 정도의 차이가 발생할 수 있습니다.
주의할 점은 모든 날짜 오류가 이 문제는 아니라는 것입니다. 예를 들어 2026-06-25가 2026-25-06처럼 깨졌다면 지역 날짜 형식이나 텍스트 변환 문제일 수 있습니다. 반대로 연도만 일정하게 밀리고, 행마다 차이가 동일하게 1462일이라면 날짜 체계를 우선 의심해 볼 만합니다.
파일 옵션에서 1904 날짜 체계를 확인하자 상황이 정리됐다
확인 위치는 생각보다 깊숙한 곳에 있습니다. 엑셀에서 파일 > 옵션 > 고급으로 들어간 뒤, 아래쪽의 이 통합 문서 계산할 때 영역을 봅니다. 여기에 1904 날짜 체계 사용이라는 체크 항목이 있습니다.
문제 파일을 열어 보니 이 항목이 켜져 있었습니다. 반면 최종 취합 파일은 꺼져 있었습니다. 둘 중 어느 쪽을 기준으로 삼을지는 업무 파일 흐름에 따라 결정해야 합니다. 이미 여러 보고서와 피벗, 수식이 최종 취합 파일의 날짜 기준으로 돌아가고 있다면 보통 취합 파일의 체계를 유지하고, 문제 날짜만 보정하는 방식이 안전합니다.
여기서 중요한 실수 하나가 있습니다. 옵션의 체크를 무작정 켰다 껐다 하면 기존 날짜가 한꺼번에 달라져 보일 수 있습니다. 특히 같은 파일 안에 정상 날짜와 잘못 복사된 날짜가 섞여 있다면, 파일 옵션을 바꾸는 순간 어느 쪽이 맞는지 더 헷갈립니다. 그래서 옵션 변경은 복구용 사본에서 테스트하고, 실제 파일에서는 보정 열을 만들어 확인한 뒤 값으로 반영하는 순서가 좋습니다.
과거로 밀린 날짜는 1462일을 더해 복구했다
이번 사례에서는 문제 날짜가 정상보다 과거로 1462일 밀린 상태였습니다. 그래서 보정 열을 하나 만들고 다음 수식을 넣었습니다.
=IF(AND(ISNUMBER(A2),A2>=DATE(2015,1,1),A2<=DATE(2035,12,31)),A2+1462,A2)단순히 =A2+1462만 써도 되지만, 실무 파일에는 빈칸, 메모성 텍스트, ‘미정’ 같은 값이 섞여 있는 경우가 많습니다. 그래서 숫자인 날짜에만 적용하도록 ISNUMBER를 걸고, 업무상 가능한 날짜 범위도 함께 제한했습니다. 날짜는 엑셀 내부에서 숫자이기 때문에 ISNUMBER가 참으로 나옵니다. 반대로 텍스트로 들어온 날짜는 이 수식에서 그대로 남습니다.
만약 복사 후 날짜가 미래로 밀렸다면 방향이 반대입니다. 그때는 1462를 더하는 것이 아니라 빼야 합니다.
=IF(AND(ISNUMBER(A2),A2>=DATE(2015,1,1),A2<=DATE(2035,12,31)),A2-1462,A2)보정 후에는 셀 서식을 날짜로 맞춘 다음, 원본 날짜와 샘플 거래 몇 건을 대조했습니다. 특히 월말, 윤년이 낀 날짜, 2월 28일과 3월 1일 주변 날짜는 꼭 확인하는 편입니다. 날짜 체계 문제는 하루 차이가 같이 따라오기 때문에 윤년 근처에서 오류가 더 눈에 잘 띕니다.
Power Query로 가져오는 파일이라면 변환 단계에서 고정하는 편이 낫다
매달 같은 외부 파일을 가져오는 구조라면 시트에서 수식을 매번 넣는 것보다 Power Query 단계에서 날짜를 보정하는 편이 깔끔합니다. 예를 들어 특정 원본 파일의 주문일이 항상 1462일 과거로 들어온다면, 날짜 형식을 지정한 뒤 날짜 더하기 단계를 넣을 수 있습니다.
= Table.TransformColumns(이전단계, {{"주문일", each Date.AddDays(_, 1462), type date}})다만 이 방식도 조건 없이 모든 파일에 적용하면 위험합니다. 같은 폴더에 정상 파일과 1904 날짜 체계 파일이 섞여 있다면 정상 날짜까지 밀어 버립니다. 이럴 때는 파일명에 공급처명을 넣어 구분하거나, 가져오기 전 샘플 날짜의 최소값과 최대값을 확인하는 검증 쿼리를 따로 두는 것이 좋습니다.
예를 들어 올해 거래 파일인데 주문일 최소값이 2020년대로 떨어진다면 원본 단계에서 경고용 표를 만들 수 있습니다. 보고서 자동화에서는 계산보다 검증이 더 중요할 때가 많습니다.
이미 붙여넣은 범위가 넓다면 선택 영역만 매크로로 처리할 수 있다
날짜 열이 여러 개이고 행이 많다면 보정 수식을 넣고 복사, 값 붙여넣기를 반복하는 것도 번거롭습니다. 이럴 때는 반드시 백업을 만든 뒤, 선택한 셀만 1462일 이동하는 간단한 매크로를 사용할 수 있습니다. 아래 코드는 수식 셀은 건드리지 않고, 숫자로 된 날짜 값만 보정합니다.
Sub ShiftDatesPlus1462()
Dim c As Range
For Each c In Selection.Cells
If Not c.HasFormula Then
If IsNumeric(c.Value) And IsDate(c.Value) Then
c.Value = c.Value + 1462
End If
End If
Next c
End Sub
Sub ShiftDatesMinus1462()
Dim c As Range
For Each c In Selection.Cells
If Not c.HasFormula Then
If IsNumeric(c.Value) And IsDate(c.Value) Then
c.Value = c.Value - 1462
End If
End If
Next c
End Sub이 매크로를 쓸 때도 선택 영역을 날짜 열로만 제한해야 합니다. 금액 열이나 수량 열이 같이 선택되어 있으면 숫자 값이 날짜로 인식되는 경우가 생길 수 있습니다. 자동화는 빠르지만, 범위를 잘못 잡으면 빠르게 망가집니다. 특히 날짜와 숫자가 나란히 있는 정산 원장에서는 필터로 날짜 열만 보이게 한 뒤 선택하는 습관이 필요합니다.
셀 서식, 텍스트 날짜, 시간값까지 같이 점검해야 했다
복구 작업 중에 헷갈렸던 부분은 시간값이 붙은 날짜였습니다. 예를 들어 2026-06-25 14:30 같은 값은 내부적으로 정수 날짜와 소수 시간의 조합입니다. 여기에 1462를 더하면 날짜만 이동하고 시간은 그대로 유지됩니다. 그래서 시간까지 있는 로그 데이터도 같은 방식으로 보정할 수 있습니다.
반대로 텍스트 날짜는 조심해야 합니다. 셀 왼쪽 위에 초록 삼각형이 있거나, =ISNUMBER(A2)가 FALSE라면 날짜처럼 보여도 실제로는 텍스트일 수 있습니다. 이 상태에서 1462를 더하려 하면 오류가 나거나 의도와 다른 결과가 나옵니다. 텍스트 날짜는 먼저 날짜 값으로 변환한 뒤 보정해야 합니다.
| 상태 | 확인 수식 | 처리 방향 |
|---|---|---|
| 정상 날짜 값 | =ISNUMBER(A2) 결과 TRUE | 1462 더하기 또는 빼기 가능 |
| 텍스트 날짜 | =ISNUMBER(A2) 결과 FALSE | 날짜 변환 후 보정 |
| 시간 포함 날짜 | 일반 형식에서 소수 포함 | 1462 보정 시 시간 유지 |
| 빈칸 또는 미정 | 값 없음 또는 문자 | 보정 제외 |
다시 안 밀리게 보는 체크포인트
비슷한 사고를 막으려면 날짜가 이상할 때 바로 수식을 고치기보다 아래 순서로 확인하는 것이 좋습니다.
- 같은 거래의 정상 날짜와 문제 날짜를 빼서 차이가 1462일인지 확인합니다.
- 문제 파일과 취합 파일의 1904 날짜 체계 사용 체크 상태를 비교합니다.
- 파일 옵션을 바로 바꾸지 말고, 사본에서 날짜가 어떻게 움직이는지 먼저 봅니다.
- 정상 날짜와 오류 날짜가 섞여 있는지 필터로 확인한 뒤 보정 범위를 정합니다.
- 보정 수식에는
ISNUMBER와 날짜 범위 조건을 넣어 텍스트나 빈칸을 제외합니다. - Power Query 자동화 파일이라면 원본별로 보정 여부를 분리하고, 최소일·최대일 검증 표를 둡니다.
- 값 붙여넣기 전에는 월말, 윤년, 시간 포함 데이터 샘플을 따로 대조합니다.
날짜가 4년 1일씩 밀리는 문제는 겉으로 보면 입력 실수처럼 보이지만, 실제로는 통합 문서의 기준 차이에서 시작되는 경우가 많습니다. 한 번 원인을 잡아 두면 다음에는 셀 서식에서 헤매지 않고 1462라는 숫자부터 확인하게 됩니다.