엑셀 2개 날짜 사이의 특정 요일 개수 계산하는 7가지 핵심 방법

엑셀 2개 날짜 사이의 특정 요일 개수 계산하는 7가지 핵심 방법
엑셀 2개 날짜 사이의 특정 요일 개수 계산하는 7가지 핵심 방법

엑셀에서 두 날짜 사이의 특정 요일이 몇 개인지 계산하는 작업은 프로젝트 관리, 근무일 계산, 일정 관리에서 매우 중요합니다. SUMPRODUCT, WEEKDAY, ROW, INDIRECT 함수를 조합하면 복잡한 계산도 간단하게 해결할 수 있습니다. 이 글에서는 실무에서 바로 활용할 수 있는 다양한 공식과 예시를 통해 날짜 계산의 전문가가 되어보겠습니다.

SUMPRODUCT와 WEEKDAY 함수 기본 공식 이해하기

가장 핵심이 되는 공식은 =SUMPRODUCT((WEEKDAY(ROW(INDIRECT(B2&”:”&C2)))=D2)*1) 입니다. 이 공식은 시작날짜(B2)와 종료날짜(C2) 사이에서 특정 요일(D2)이 몇 번 나타나는지를 계산합니다. ROW(INDIRECT(B2&”:”&C2)) 부분은 두 날짜 사이의 모든 날짜를 연속된 숫자로 변환하는 역할을 하며, 엑셀에서 날짜가 1900년 1월 1일부터 시작하는 일련번호로 저장되는 특성을 활용합니다. 이 함수 조합에 대한 자세한 설명은 여기서 확인할 수 있습니다.

WEEKDAY 함수의 요일 번호 체계 활용법

WEEKDAY 함수는 날짜를 1부터 7까지의 숫자로 변환합니다. 기본 설정에서는 일요일이 1, 토요일이 7이 됩니다. 하지만 return_type 매개변수를 사용하면 요일 계산 기준을 변경할 수 있습니다. return_type이 2일 때는 월요일이 1이 되고 일요일이 7이 됩니다. 이는 월요일을 주의 시작일로 하는 국제 표준(ISO 8601)과 일치합니다. 예를 들어 =WEEKDAY(TODAY(),2)를 사용하면 오늘이 월요일부터 시작하는 주에서 몇 번째 요일인지 알 수 있습니다.

  • return_type 1: 일요일=1, 월요일=2, 화요일=3, 수요일=4, 목요일=5, 금요일=6, 토요일=7
  • return_type 2: 월요일=1, 화요일=2, 수요일=3, 목요일=4, 금요일=5, 토요일=6, 일요일=7
  • return_type 3: 월요일=0, 화요일=1, 수요일=2, 목요일=3, 금요일=4, 토요일=5, 일요일=6
  • return_type 11-17: 다양한 주 시작일 조합으로 월요일부터 일요일까지 선택 가능

실무에서 자주 사용되는 요일 계산 패턴들

프로젝트 관리에서는 주로 평일만 계산하거나 특정 요일의 빈도를 파악해야 합니다. 평일(월-금) 개수를 구하려면 월요일부터 금요일까지 각각 계산한 후 합계를 구하는 방법이 있습니다. 또는 NETWORKDAYS 함수를 사용하여 더 간단하게 해결할 수도 있습니다. WEEKDAY 함수의 다양한 활용 예시는 이 자료에서 더 자세히 확인할 수 있습니다.

요일 WEEKDAY 값 실무 활용 예시
월요일 2 (기본) / 1 (type=2) 주간 회의 일정 계산
화요일 3 (기본) / 2 (type=2) 정기 업무 보고서 제출일
수요일 4 (기본) / 3 (type=2) 중간 점검일 설정
목요일 5 (기본) / 4 (type=2) 마케팅 캠페인 런칭일

ROW와 INDIRECT 함수의 협력 메커니즘

ROW(INDIRECT(시작날짜&”:”&종료날짜)) 구조는 엑셀의 독특한 특성을 활용한 기법입니다. INDIRECT 함수는 텍스트 형태의 참조를 실제 셀 참조로 변환하고, ROW 함수는 해당 행 번호들을 배열로 반환합니다. 예를 들어 2023년 1월 1일이 44927이라는 일련번호를 가지고 있다면, ROW(INDIRECT(“44927:44933”))는 {44927;44928;44929;44930;44931;44932;44933} 배열을 생성합니다. 이는 1주일간의 모든 날짜를 나타내며, 각 날짜에 WEEKDAY 함수를 적용하면 해당 주의 요일 패턴을 파악할 수 있습니다.

이러한 배열 처리 방식은 VBA를 사용하지 않고도 복잡한 날짜 계산을 가능하게 합니다. 특히 대량의 데이터를 처리할 때 반복문 없이도 효율적인 계산이 가능하며, 동적 배열 함수가 도입된 최신 엑셀에서는 더욱 강력한 성능을 보여줍니다. 마이크로소프트 공식 WEEKDAY 함수 문서에서 더 자세한 기술적 내용을 확인하실 수 있습니다.

SUMPRODUCT 함수로 조건부 계산 최적화하기

SUMPRODUCT 함수는 배열의 각 요소를 곱한 후 합계를 구하는 함수이지만, 조건부 계산에서 매우 유용합니다. (WEEKDAY(배열)=특정요일)*1 형태에서 조건이 맞으면 TRUE(1), 틀리면 FALSE(0)가 되어 해당 요일만 카운트됩니다. 이는 COUNTIFS 함수로는 구현하기 어려운 복잡한 날짜 조건을 처리할 수 있게 해줍니다. SUMPRODUCT는 다중 조건을 동시에 처리할 수 있어, 예를 들어 특정 기간의 평일이면서 동시에 특정 월에 해당하는 날짜만 계산하는 것도 가능합니다.

실제 업무에서는 =SUMPRODUCT((WEEKDAY(날짜범위,2)<=5)*1)와 같은 공식으로 평일만 계산하거나, =SUMPRODUCT((WEEKDAY(날짜범위,2)>=6)*1)로 주말만 계산할 수 있습니다. 이러한 유연성 덕분에 SUMPRODUCT는 날짜 계산뿐만 아니라 다양한 조건부 집계 작업의 핵심 함수로 활용되고 있습니다.

오류 해결과 실무 팁 모음

날짜 계산에서 자주 발생하는 문제들과 해결방법을 알아보겠습니다. 첫째, 날짜가 텍스트 형식으로 입력된 경우 DATEVALUE 함수로 변환해야 합니다. 둘째, 빈 셀이 포함된 범위에서는 예상과 다른 결과가 나올 수 있으므로 IFERROR나 IF(ISBLANK()) 함수로 처리해야 합니다. 셋째, 시작날짜가 종료날짜보다 큰 경우를 대비해 MIN, MAX 함수를 활용한 검증 로직을 추가하는 것이 좋습니다.

성능 최적화 측면에서는 큰 날짜 범위를 처리할 때 배열 공식의 계산 속도를 고려해야 합니다. 수만 개의 날짜를 처리하는 경우에는 헬퍼 열을 만들어 단계적으로 계산하는 것이 더 효율적일 수 있습니다. 또한 조건부 서식과 연계하여 특정 요일을 시각적으로 표시하면 데이터 검증이 더욱 쉬워집니다. WEEKDAY 함수의 고급 활용법과 성능 최적화 팁은 이 링크에서 더 자세히 확인할 수 있습니다.

고급 응용: 휴일 제외 계산과 커스터마이징

실제 업무에서는 단순히 요일만 계산하는 것이 아니라 공휴일이나 회사 휴무일을 제외해야 하는 경우가 많습니다. 이때는 NETWORKDAYS.INTL 함수와 조합하거나, 별도의 휴일 목록을 만들어 SUMPRODUCT 함수에 추가 조건으로 포함시킬 수 있습니다. 예를 들어 =SUMPRODUCT((WEEKDAY(날짜범위,2)=1)*(COUNTIF(휴일범위,날짜범위)=0))와 같은 공식으로 월요일이면서 동시에 휴일이 아닌 날짜만 계산할 수 있습니다.

또한 분기별, 월별 요일 분포를 분석하려면 YEAR, MONTH 함수와 조합하여 더 세밀한 조건을 설정할 수 있습니다. 이러한 고급 응용은 인사 관리, 프로젝트 계획, 매출 분석 등 다양한 분야에서 강력한 도구가 됩니다. 특히 Power Query나 피벗 테이블과 연계하면 대용량 데이터의 요일별 패턴 분석도 가능해집니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤