엑셀에서 만나이 구하는 방법

2분

엑셀에서 특정 셀에 생년월일(Date형식)이 있다면 이를 바탕으로 오늘의 만 나이(a.k.a. 윤석열나이)를 계산해봅시다. 한국 사람들의 일반적인 나이 계산 방식을 적용하면 만나이 계산은 무척이나 귀찮습니다.

  1. 기본적으로 올해와 해당일자의 연도의 차이를 구합니다.
  2. 날짜를 비교하여 생일이 오늘 이후라면 연도의 차이가 만 나입니다.
  3. 아직 생일이 지나지 않았다면 연도의 차이에 1을 더 빼면 만 나이입니다.

그런데 ‘생일을 지났다’는 걸 판단하기가 좀 어렵습니다.

  1. 이번달이 생일의 월보다 크거나,
  2. 이번달이 생일의 월과 같으면서 날짜는 생일보다 커야 합니다.

따라서 월을 비교하는 조건과 일을 비교하는 조건을 각각 고려해야하기 때문에 상당히 귀찮은 수식을 써야 합니다. IF(), AND() 함수가 여러번 중첩되면서 복잡한 수식이 됩니다.

  1. 연도를 비교
  2. 대상 일자의 월이 이번달 보다 큰 지 체크
  3. 대상 일자의 월이 이번달과 같다면 날짜가 오늘날짜 보다 큰지 체크

그런데 이런 복잡한 조건 없이 좀 더 간단하게 만 나이를 구하는 방법이 있습니다. 엑셀의 날짜 타입은 특정한 일자(1900-01-01)로부터 경과한 날 수를 정수로 저장하고 있습니다. 즉 내부적으로는 숫자값인 것을 그 날짜를 표현하는 형식을 적용하여 셀에서 표시해주는 것이죠. 내부적으로 정수값이기 때문에 덧셈이나 뺄셈과 같은 기본적인 연산이 가능합니다. 과거 어떤 날짜를 오늘 날짜(=TODAY())에서 뺀다면 그 날부터 오늘까지 경과한 일 수가 됩니다.

이것을 365로 나누면 그 몫이 몇 년이 경과했는지가 됩니다. 그런데 그냥 365로 나누면 그 기간 내에 윤년으로 들어가 있는 2월 29일이 고려가 되지 않아서 오차가 발생할 수 있습니다. 특히 오늘이 생일 전후로 가까운 날짜라면 그 오차로 인해 나이가 바뀌게 됩니다. 윤년은 4년마다 있어서 4년에 한 번은 1년이 366일이므로, 평균적으로 1년은 365.25일이라고 볼 수 있습니다. 따라서 경과일을 365.25로 나눈 몫 혹은 나눈 결과의 정수 부분이 만 나이가 됩니다.

따라서 생년월일이 A1셀에 있을 때 이 사람의 만 나이는 다음 수식으로 계산할 수 있습니다.

=FLOOR.MATH((TODAY() - A1) / 365.25)

(물론 100년에 한 번은 윤년이 없기 때문에 이 오차는 어쩌지? 할 수 있지만 오차가 누적되려면 200살 이상 살아야 하므로 당장은 고려할 사항이 아닙니다.)