본문 바로가기
기술자료 (KB)/Power Platform

Power Apps 선택 기간 중 휴일 제거 방법 - 휴가 기간 일자 확인

by 이완주 2023. 11. 16.

휴가일은 시작일 ~ 종료일 까지의 기간 중 휴일 및 법정 공휴일을 제외하여야 한다.

Weekday 함수를 사용하여 현재 요일이 주말인지를 확인할 수 있다.

 

1.    선택된 날짜가 주말인지 아닌지 확인하는 방법

아래 예제는 날짜를 선택하면 주말인지 평일인지를 확인해 주는 예제이다.

If(
    Weekday(DatePicker1,StartOfWeek.Monday)= 6 Or 
    Weekday(DatePicker1,StartOfWeek.Monday)= 7,
    "주말","평일"
)

 

2.    시작과 종료일을 선택했을 때 주말을 뺀 일수 값 계산

DateDiff는 날짜의 차이를 계산하게 되는데 시작과 종료일이 같으면 0이 됨으로 1을 더한다.

DateDiff(StartDate,EndDate) + 1 & ""

 

3.    선택된 기간을 나타내는 컬렉션을 만들기

이제 선택된 기간의 날짜 중 휴일이 있는지를 확인해야 한다.

위의 방법으로 날짜만큼 컬렉션을 만든다.

Clear(ColWeekendCheck);
ForAll(
    Sequence( DateDiff(StartDate,EndDate) + 1 ),
    Collect( ColWeekendCheck, {Date : DateAdd(StartDate,Value -1)} )
);

 

4.    컬렉션을 만들 때 주말을 체크하는 컬럼의 추가

Clear(ColWeekendCheck);
ForAll(
    Sequence( DateDiff(StartDate,EndDate) + 1 ),
    Collect( ColWeekendCheck,
        {
            Date : DateAdd(StartDate,Value -1),
            Weekend : If(
                            Weekday(DateAdd(StartDate,Value -1),StartOfWeek.Monday)= 6 Or
                            Weekday(DateAdd(StartDate,Value -1), StartOfWeek.Monday)= 7,
                            "true","false"
                        )
        }
    )
);

 

5.    일수 값 변경

//DateDiff(StartDate,EndDate) + 1 & ""
CountIf(ColWeekendCheck,!Weekend) & ""  //Weekend 값이 false인 경우 카운트해라

 

6.    공휴일 추가

공휴일을 확인하기 위해서는 공휴일을 데이터베이스가 필요하다.

아래 관련자료 링크에 의 자료에서 휴일 엑셀 파일을 다운 받아 사용했으니 참고

 

아래와 같이 VacHoliday 목록 생성

 

7.    목록의 날짜를 확인해서 휴일인지 아닌지를 확인하는 Collection을 만들기

ClearCollect(
    ColVacHoliday,
    Filter(
        AddColumns(
            VacHoliday,"Weekend",If(Weekday(Holiday),StartOfWeek.Monday)= 6 Or Weekday(Holiday,StartOfWeek.Monday)= 7,"true","false"
        ),
        HolidayYear=Text(Today(),"yyyy") //올해 데이터만 필터링
    )
)

 

ColVacHoliday 컬렉션에는 기존 값에 Weekend 컬럼이 추가되고 주말이면 true 아니면 false 값이 들어가게 된다.

올해 데이터만 필터해서 값을 나타나게 된다.

 

 

8.    ColVacHoliday 컬렉션에서 선택한 날짜 기간에서 공휴일에 주말이 아닌 날짜 계산

CountIf(
    Filter(ColVacHoliday,!Weekend),
    Holiday >= StartDate, Holiday <= EndDate
)

 

9.    선택 기간의 공휴일과 주말을 제외한 일수를 계산한 결과

CountIf(ColWeekendCheck,!Weekend) -
CountIf(
    Filter(ColVacHoliday,!Weekend), Holiday >= StartDate, Holiday <= EndDate
)& ""

 

10.    StartDate를 변경하게 되면 EndDate는 값은 StartDate로 변경

DefaultDate = StartDate.SelectedDate

 

11.     StartDateEndDate의 값을 변경하게 되면 컬렉션을 만들기

OnChange 값을 아래와 같이 변경

Clear(ColWeekendCheck);
ForAll(
    Sequence( DateDiff(StartDate,EndDate) + 1 ),
    Collect( ColWeekendCheck,
        {
            Date : DateAdd(StartDate,Value -1),
            Weekend : If(
                            Weekday(DateAdd(StartDate,Value -1),StartOfWeek.Monday)= 6 Or
                            Weekday(DateAdd(StartDate,Value -1), StartOfWeek.Monday)= 7,
                            "true","false"
                        )
        }
    )
);

 

[관련자료]

Day, Month, Year, Hour, Minute, Second Weekday 함수https://learn.microsoft.com/ko-kr/power-platform/power-fx/reference/function-datetime-parts

 

Day, Month, Year, Hour, Minute, Second 및 Weekday 함수 - Power Platform

Day, Month, Year, Hour, Minute, Second 및 Weekday 함수에 대한 구문과 예제를 포함한 참조 정보입니다.

learn.microsoft.com

 

Sequence 함수https://learn.microsoft.com/ko-kr/power-platform/power-fx/reference/function-sequence

 

Sequence 함수 - Power Platform

Sequence 함수에 대한 구문과 예제를 포함한 참조 정보입니다.

learn.microsoft.com

 

엑셀 평일 주말 공휴일, 함수 하나로 관리하는 방법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/

 

엑셀 평일 & 주말, 공휴일까지, 함수 하나로 관리하는 방법 - 오빠두엑셀

엑셀 평일 주말 공휴일, 함수 하나로 관리하는 방법 엑셀 평일 주말 공휴일 구분 목차 바로가기 영상강의 예제파일 다운로드 오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고

www.oppadu.com

 

Excluding weekends and holidays in date differences in PowerAppshttps://powerapps.microsoft.com/en-us/blog/excluding-weekends-and-holidays-in-date-differences-in-powerapps/

 

Excluding weekends and holidays in date differences in PowerApps

Calendars are often the glue that keep our busy lives in tact. But what if your organization only needs to consider the business days in your application? Inspired by the multiple community…

powerapps.microsoft.com

 

댓글