5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
실무 위키응용 공식특정 요일·공휴일 가중 일수 계산 공식

특정 요일·공휴일 가중 일수 계산 공식

지원 버전 자세히 보기
엑셀 2013 이전엑셀 2016엑셀 2019엑셀 2021엑셀 2024M365웹 엑셀

특정 요일과 공휴일에 가중치를 적용해 일수를 합산하는 공식입니다.

특정 요일·공휴일 가중 일수 계산 공식 예제 미리보기
예제 미리보기 크게 보기

인수 설명

01특정 요일·공휴일 가중 배열수식

{=SUM ( IF ( WEEKDAY ( 시작일+ROW ( INDIRECT ( "A1:A"&종료일-시작일+1 ) )-1, 2 )=요일번호, 요일가중치, IF ( COUNTIF ( 공휴일범위, 시작일+ROW ( INDIRECT ( "A1:A"&종료일-시작일+1 ) )-1 )>0, 공휴일가중치, 1 ) ) )}
인수 설명 자세히 보기(인수를 클릭하면 해당 영역만 강조됩니다. 여러 개를 함께 켜고 끌 수 있습니다.)
인수구분설명
시작일필수가중 일수를 계산할 기간의 첫 날짜입니다.
종료일필수가중 일수를 계산할 기간의 마지막 날짜입니다. 종료일도 계산에 포함됩니다.
요일번호필수WEEKDAY 함수의 반환 형식 2에서 가중치를 적용할 요일 번호입니다. 월요일은 1, 일요일은 7입니다. 지정 요일과 공휴일이 겹치면 요일가중치가 먼저 적용됩니다.
요일가중치필수지정 요일에 적용할 일수입니다.
공휴일범위필수공휴일 날짜가 입력된 범위입니다.
공휴일가중치필수지정 요일이 아닌 공휴일에 적용할 일수입니다.
E2{=SUM(IF(WEEKDAY($B$2+ROW(INDIRECT("A1:A"&$B$3-$B$2+1))-1,2)=$B$4,$B$5,IF(COUNTIF($C$2:$C$8,$B$2+ROW(INDIRECT("A1:A"&$B$3-$B$2+1))-1)>0,$B$6,1)))}
A
B
C
D
E
F
1
설정
공휴일
가중 일수
2
시작일
2026-09-01
2026-09-03
9
3
종료일
2026-09-06
2026-09-06
4
요일번호
7
2026-09-10
5
요일가중치
3
2026-09-20
6
공휴일가중치
2
2026-10-03
7
2026-10-09
8
2026-12-25
9
2026-09-01부터 2026-09-06까지 일요일 1일은 3, 공휴일 1일은 2, 일반일 4일은 각 1로 계산합니다. 일요일과 공휴일이 겹친 2026-09-06에는 요일가중치가 우선되어 E2 셀은 9를 반환합니다. Excel 2019 이하에서는 Ctrl+Shift+Enter로 입력합니다.

02공휴일 가중 배열수식

{=SUM ( IF ( COUNTIF ( 공휴일범위, 시작일+ROW ( INDIRECT ( "A1:A"&종료일-시작일+1 ) )-1 )>0, 공휴일가중치, 1 ) )}
인수 설명 자세히 보기
인수구분설명
시작일필수가중 일수를 계산할 기간의 첫 날짜입니다.
종료일필수가중 일수를 계산할 기간의 마지막 날짜입니다. 종료일도 계산에 포함됩니다.
공휴일범위필수공휴일 날짜가 입력된 범위입니다.
공휴일가중치필수공휴일에 적용할 일수입니다.
E2{=SUM(IF(COUNTIF($C$2:$C$8,$B$2+ROW(INDIRECT("A1:A"&$B$3-$B$2+1))-1)>0,$B$6,1))}
A
B
C
D
E
F
1
설정
공휴일
가중 일수
2
시작일
2026-09-01
2026-09-03
8
3
종료일
2026-09-06
2026-09-06
4
요일번호
7
2026-09-10
5
요일가중치
3
2026-09-20
6
공휴일가중치
2
2026-10-03
7
2026-10-09
8
2026-12-25
9
같은 6일 중 공휴일 2일은 각 2, 나머지 4일은 각 1로 계산해 E2 셀은 8을 반환합니다. Excel 2019 이하에서는 Ctrl+Shift+Enter로 입력합니다.

03LET·SEQUENCE 함수 공식 (Excel 2021+)

=LET ( 날짜배열, SEQUENCE ( 종료일-시작일+1, , 시작일 ), SUM ( IF ( WEEKDAY ( 날짜배열, 2 )=요일번호, 요일가중치, IF ( COUNTIF ( 공휴일범위, 날짜배열 )>0, 공휴일가중치, 1 ) ) ) )
인수 설명 자세히 보기
인수구분설명
시작일필수가중 일수를 계산할 기간의 첫 날짜입니다.
종료일필수가중 일수를 계산할 기간의 마지막 날짜입니다. 종료일도 계산에 포함됩니다.
요일번호필수WEEKDAY 함수의 반환 형식 2에서 가중치를 적용할 요일 번호입니다. 월요일은 1, 일요일은 7입니다. 지정 요일과 공휴일이 겹치면 요일가중치가 먼저 적용됩니다.
요일가중치필수지정 요일에 적용할 일수입니다.
공휴일범위필수공휴일 날짜가 입력된 범위입니다.
공휴일가중치필수지정 요일이 아닌 공휴일에 적용할 일수입니다.
E2=LET(dates,SEQUENCE($B$3-$B$2+1,,$B$2),SUM(IF(WEEKDAY(dates,2)=$B$4,$B$5,IF(COUNTIF($C$2:$C$8,dates)>0,$B$6,1))))
A
B
C
D
E
F
1
설정
공휴일
가중 일수
2
시작일
2026-09-01
2026-09-03
9
3
종료일
2026-09-06
2026-09-06
4
요일번호
7
2026-09-10
5
요일가중치
3
2026-09-20
6
공휴일가중치
2
2026-10-03
7
2026-10-09
8
2026-12-25
9
SEQUENCE 함수가 종료일까지 6개의 날짜를 만들고 LET 함수가 같은 가중 계산을 한 번에 처리해 E2 셀은 9를 반환합니다.

동작 원리

01특정 요일·공휴일 가중 배열수식

ROW 함수와 INDIRECT 함수로 종료일까지의 날짜 배열을 만들고, IF 함수가 요일과 공휴일 가중치를 차례로 적용한 뒤 SUM 함수가 합산합니다.

특정 요일·공휴일 가중 배열수식의 예제 시트에서 E2 셀이 9를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

종료일까지 날짜 배열을 만듭니다

종료일-시작일+1을 배열 길이로 사용하므로 종료일까지 빠짐없이 포함하고, 시작일과 종료일이 같아도 길이 1의 배열을 만듭니다.

=$B$2+ROW ( INDIRECT ( "A1:A"&$B$3-$B$2+1 ) )-1
= {46266;46267;46268;46269;46270;46271} 2026-09-01부터 2026-09-06까지 6개의 날짜 일련번호입니다.
2

요일과 공휴일 가중치를 적용합니다

WEEKDAY 함수로 지정 요일을 먼저 판정하고, 그 밖의 날짜만 COUNTIF 함수로 공휴일 여부를 확인합니다. 2026-09-06은 일요일과 공휴일이 겹치지만 먼저 판정한 요일가중치 3을 적용합니다.

=IF ( WEEKDAY ( 날짜배열, 2 )=$B$4, $B$5, IF ( COUNTIF ( $C$2:$C$8, 날짜배열 )>0, $B$6, 1 ) )
= {1;1;2;1;1;3} 9월 3일은 공휴일가중치 2, 9월 6일은 요일가중치 3을 적용한 배열입니다.
3

SUM 함수가 가중 일수를 합산합니다

SUM 함수는 날짜별 가중치 여섯 개를 더해 전체 가중 일수를 계산합니다.

=SUM ( {1;1;2;1;1;3} )
= 9 1+1+2+1+1+3=9입니다.

02공휴일 가중 배열수식

ROW 함수와 INDIRECT 함수로 종료일까지의 날짜 배열을 만들고, COUNTIF 함수와 IF 함수로 공휴일 가중치를 적용한 뒤 SUM 함수가 합산합니다.

공휴일 가중 배열수식의 예제 시트에서 E2 셀이 8을 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

종료일까지 날짜 배열을 만듭니다

종료일-시작일+1을 배열 길이로 사용하므로 종료일까지 빠짐없이 포함하고, 시작일과 종료일이 같아도 길이 1의 배열을 만듭니다.

=$B$2+ROW ( INDIRECT ( "A1:A"&$B$3-$B$2+1 ) )-1
= {46266;46267;46268;46269;46270;46271} 2026-09-01부터 2026-09-06까지 6개의 날짜 일련번호입니다.
2

공휴일 가중치를 적용합니다

COUNTIF 함수는 9월 3일과 9월 6일에 1을 반환합니다. IF 함수는 두 날짜에 공휴일가중치 2를 적용하고 나머지 날짜에는 1을 적용합니다.

=IF ( COUNTIF ( $C$2:$C$8, 날짜배열 )>0, $B$6, 1 )
= {1;1;2;1;1;2} 공휴일 두 날짜에만 가중치 2를 적용한 배열입니다.
3

SUM 함수가 가중 일수를 합산합니다

SUM 함수는 날짜별 가중치 여섯 개를 더해 전체 가중 일수를 계산합니다.

=SUM ( {1;1;2;1;1;2} )
= 8 1+1+2+1+1+2=8입니다.

03LET·SEQUENCE 함수 공식 (Excel 2021+)

SEQUENCE 함수로 종료일까지의 날짜 배열을 만들고, LET 함수가 요일과 공휴일 가중치 계산을 묶어 SUM 함수의 결과로 반환합니다.

LET·SEQUENCE 함수 공식의 예제 시트에서 E2 셀이 9를 반환하는 계산 과정입니다. 단계마다 강조된 부분이 어떻게 계산되는지 살펴보세요.

1

SEQUENCE 함수가 날짜 배열을 만듭니다

종료일-시작일+1을 행 개수로 지정해 시작일부터 종료일까지 6개의 날짜를 세로 배열로 반환합니다.

=SEQUENCE ( $B$3-$B$2+1, , $B$2 )
= {46266;46267;46268;46269;46270;46271} 2026-09-01부터 2026-09-06까지의 날짜 일련번호입니다.
2

IF 함수가 날짜별 가중치를 반환합니다

WEEKDAY 함수가 지정 요일을 먼저 판정하고 COUNTIF 함수가 나머지 날짜의 공휴일 여부를 확인하므로, 겹치는 날짜에는 요일가중치가 우선 적용됩니다.

=IF ( WEEKDAY ( dates, 2 )=$B$4, $B$5, IF ( COUNTIF ( $C$2:$C$8, dates )>0, $B$6, 1 ) )
= {1;1;2;1;1;3} 9월 3일은 공휴일가중치 2, 9월 6일은 요일가중치 3을 적용한 배열입니다.
3

LET 함수가 합계를 반환합니다

LET 함수는 날짜 배열을 dates로 저장해 두 번 계산하지 않고, SUM 함수가 날짜별 가중치를 더한 9를 결과값으로 반환합니다.

=LET ( dates, SEQUENCE ( $B$3-$B$2+1, , $B$2 ), SUM ( IF ( WEEKDAY ( dates, 2 )=$B$4, $B$5, IF ( COUNTIF ( $C$2:$C$8, dates )>0, $B$6, 1 ) ) ) )
= 9 1+1+2+1+1+3=9입니다.

댓글 8

댓글 8
5 (5개 평가)
ywkoc
ywkoc 2021.02.14 14:00
짝짝짝..그저 놀랍고 신기합니다.. 늦은 나이에 머리가 지끈합니다만 오랫동안 생각해보니 어느정도 알듯합니다..나중에 기회가 되신다면 동영상강의로 원리강의 부탁드립니다 결과값이 이해가 되는것도 있고 잘 안되는 것도 있던데요 동영상강의로 부탁드립니다 매번 신선한 자극으로 뇌세포가 살아나는 느낌입니다. 고맙습니다
gosang****
gosang**** 2021.02.14 17:53
좋은 강의 감사드려요!!!
김종빈
김종빈 2021.02.16 07:30
유튜브에 나오던 공휴일 목록 파일 다운받을수있을까요?
오빠두엑셀
오빠두엑셀 작성자 2021.02.17 13:20
https://www.oppadu.com/%ec%97%91%ec%85%80-%ed%8f%89%ec%9d%bc-%ec%a3%bc%eb%a7%90-%ea%b3%b5%ed%9c%b4%ec%9d%bc-%ea%b5%ac%eb%b6%84/
위 링크를 참고해보세요.
안태한
안태한 2021.06.16 11:55
종료일은 계산에서 빠지는 건가요? 첫번째 데이터 보면 20일까지만 계산되는 것 같던데...
오빠두엑셀
오빠두엑셀 작성자 2021.06.21 20:48
안녕하세요.
공식 뒤에 +1 이 빠져있었네요 ..ㅜㅜ; 죄송합니다.
종료일이 포함되도록 공식을 수정해드렸으니 다시 확인해보시겠어요?
확인해주셔서 감사드립니다.
안태한
안태한 2021.06.22 09:53
고맙습니다 ^^;
강민준🤗
강민준🤗 2024.08.11 16:54
좋은 강의 감사합니다🙇‍♂️
스크랩 완료