특정 날짜의 요일을 정수로 반환하는 WEEKDAY 함수

등록일 : 2025.10.11 (09:31)  / 조회 : 27
지난 강좌에서 TEXT 함수를 통해 특정 날짜에서 요일만을 텍스트로 반환해 보았습니다. 
단순히 요일만 반환해야 한다면 셀 표시 형식을 변경하면 됩니다. 경우에 따라서 DATE 함수를 사용해야겠지만 어쨌든 셀 표시 형식을 "aaa" 또는 "aaaa"로 변경하면 끝납니다. 하지만 요일에 따라 다른 연산이 돼야 하는 경우, 요일을 반환하고 또 다른 연산을 해야 합니다. 이전 강좌에서는 IF 함수와 TEXT 함수를 사용했었죠. 그런데 좀 더 다양한 형태로 요일을 계산하거나 구분하기 위해선 TEXT 함수로 요일을 처리하기보다 WEEKDAY 함수를 사용하는 편이 좋습니다.
가령 주말과 주중에 가격을 달리 받는 음식점이나 월, 화만 시간이 바뀌는 열차 시간 등, 특정 요일을 구분할 때는 WEEKDAY 함수를 사용하는 편이 수식을 간소화할 수 있습니다.





예제 파일

예제 파일은 한 음식점의 점심 식사 예약 현황입니다. 평일과 주말에 가격을 다르게 받고 있습니다. 예약일이 주말인지 아닌지를 반환하고 해당 요일의 음식 가격에 예약인원 곱하여 금액으로 계산해야 합니다. 이 경우 TEXT 함수를 사용해서 요일을 반환한다면, OR 함수를 또 사용해야 예약일이 주말(토요일이거나 일요일)인지 아닌지를 반환할 수 있습니다. 안될 것은 없지만 수식이 길어질 수밖에 없죠. 반면 WEEKDAY 함수를 사용하면 요일을 숫자로 반환할 수 있기 때문에 OR 함수를 사용하지 않더라도 부등호로 쉽게 구분할 수 있습니다.

WEEKDAY

날짜(날짜 표시 형식을 갖는 값 또는 셀, DATE 함수로 반환된 날짜)에서 해당하는 요일을 정수로 반환합니다.

WEEKDAY(serial_number,[return_type])
serial_number날짜(날짜 표시 형식을 갖는 값 또는 셀, DATE 함수로 반환된 날짜)
return_type[선택] 요일을 어떤 순서로 반환할지 결정하는 타입(숫자)
생략시 기본 1 (일요일 1, 월요일 2, 화요일 3, 수요일 4, 목요일 5, 금요일 6, 토요일 7)

함수 정리는 위와 같습니다. serial_number 인수로 지정한 날짜의 요일을 return_type에 따라 숫자 1, 2, 3, ... 형태로 반환한다는 얘기입니다.





return_type 인수를 조금 더 설명하겠습니다. 기본은 1이고 생략 시 1로 처리됩니다.
reutrn_type이 1인 경우 시작 요일을 "일요일"로 간주하고 반환 값을 1로 처리합니다. 다음 요일(월요일)로 넘어가면 다시 1이 더해져 반환 값이 2가 되고, 같은 방식으로 다음 요일들은 3, 4, 5, ... 로 반환됩니다. 하지만 통상적으로 한 주의 시작을 "월요일"로 생각하죠. 이 경우 return_type을 2로 설정하면, 시작 요일인 "월요일"을 1로, 마지막 요일인 "일요일"을 7로 반환 할 수 있습니다. 이렇게 2가지 형태만 있는 것은 아닙니다. 시작 요일을 "수요일"로 설정하여 "수요일"의 반환 값을 1로 설정할 수도 있습니다. 그렇다면 마지막 요일은 "화요일"이 되고 반환 값은 7이 되겠죠. 즉 return_type에 따라 요일의 반환 값을 다르게 설정할 수 있다는 얘기입니다.

그래서 return_type 별로 반환 값을 정리하면,

return_type 반환 값

위 표와 같이 됩니다. 주로 사용하는 return_type은 1과 2입니다.
추가로 return_type을 10번대로 사용하면 1의 자리에 따라 시작 요일이 바뀐다고 생각하시면 좀 더 쉽게 기억할 수 있습니다. 11은 월, 12는 화, 13은 수, ...
만약 수요일을 시작일로 하고 싶다면 return_type을 13을 사용하면 되겠죠. 
사실 함수 작성 시 인수 힌트만 잘 보시면 기억하실 필요도 없습니다. 대략적인 구조만 기억하면 됩니다.

이제 주중과 주말을 구분하겠습니다. 
WEEKDAY 함수의 return_type을 1로 설정하면, WEEKDAY 함수 반환 결과가 1보다 크고 7보다 작다면 주중, 아니라면 주말이 될 것입니다. 
return_type을 2로 설정하면 좀 더 간단해집니다. WEEKDAY 반환 결과가 6보다 작다면 주중, 아니라면 주말이 됩니다. 부등호 하나로 구분되는 것이죠. 
즉 주중과 주말은 return_type을 2로 설정하는 것이 훨씬 간단해집니다. 





일단 예제 파일의 평일과 주말의 금액만을 반환해 보겠습니다.

weekday 적용
  1. 작성할 셀(E7)을 클릭하여 선택합니다.
  2. 수식 입력줄에서 IF 함수명을 작성합니다. => =IF(
  3. IF 함수의 첫 번째 인수 힌트(logical_test)를 확인하고 조건(WEEKDAY 결과가 6보다 작다)을 작성합니다.
    1. WEEKDAY 함수명을 작성합니다. => =IF(WEEKDAY(
    2. WEEKDAY 첫 번째 인수 힌트(serial_number)를 확인하고 예약일(D7)셀을 참조합니다. => =IF(WEEKDAY(D7
    3. 쉼표로 구분, WEEKDAY 두 번째 인수 힌트(return_type)를 확인하고 2를 입력합니다.(월요일 1) => =IF(WEEKDAY(D7, 2
    4. 닫힌 괄호를 입력하여 WEEKDAY 함수를 완성한 후 "<6"를 입력합니다. => =IF(WEEKDAY(D7, 2)<6
    => IF 함수의 logical_test(예약일이 평일)가 완성되었습니다.
  4. 쉼표로 구분, IF 함수의 두 번째 인수 힌트(value_if_true)를 확인, 조건이 참(예약일이 평일)인 경우 반환 값(C4)을 참조. 
    => =IF(WEEKDAY(D7, 2)<6,$C$4
    (주의! 자동 채우기 시 이동할 것을 방지하기 위해 절대 참조)
  5. 쉼표로 구분, IF 함수의 세 번째 인수 힌트(value_if_false)를 확인, 조건이 거짓인 경우 반환 값(E4)을 참조,  닫힌 괄호를 입력하고 엔터로 셀 완성.
     => =IF(WEEKDAY(D7, 2)<6,$C$4,$E$4)
    (주의! 자동 채우기 시 이동할 것을 방지하기 위해 절대 참조)
  6. 최종, 작성한 E7셀로 나머지 셀을 자동 채우기(우측 하단에서 클릭 드래그) 합니다.

결과, 그림처럼 평일과 주말의 금액이 해당 셀에 맞게 반환됩니다.





다음, 반환된 금액에 해당 예약 인원을 곱하기만 하면 끝입니다.

최종 가격
  1. 작성할 셀(E7)을 클릭하여 선택합니다.
  2. 수식 입력줄에서 작성된 수식에 예약인원을 참조로 곱해준 후 엔터로 셀 완성 => =IF(WEEKDAY(D7,2)<6,$C$4,$E$4)*C7
  3. 최종, 작성한 E7셀로 나머지 셀을 자동 채우기(우측 하단에서 클릭 드래그) 합니다.

결과, 요일에 해당하는 금액으로 총금액이 반환됩니다.

다음, 강좌 앞에서 언급했지만 TEXT와 OR 함수를 사용해도 동일한 결과를 얻을 수 있습니다. 이건 수식만 확인해 보겠습니다.


TEXT와 WEEKDAY



그림처럼 주말을 각각 OR 함수를 나누어 작성해야 하므로 수식이 길어집니다.
WEEKDAY 함수를 사용하여 요일을 숫자로 반환하면 수식이 훨씬 간소해지는 것이죠.


첨부파일

WEEKDAY.xlsx

(9.9 Kb)save_alt





이전글

윤슬로

402025.10.10
코멘트 의견글 입니다. ()

굵게 밑줄 기울임 취소선 글자색 배경색 윗첨자 아래첨자

왼쪽 정렬 가운데 정렬 오른쪽 정렬 양쪽 정렬

배경색 윗첨자 아래첨자 밑줄 기울임 취소선

url og table

html

줄이기 늘리기