본문 바로가기
VBA/365 FUNCTION

[365리뷰] 엑셀365함수와 수식시리즈_84[feat. 우노사설님]

by 일등미노왕국 2024. 2. 11.

https://www.youtube.com/watch?v=ArRyv21LlnI&t=50s

 

시작일과 종료일사이의 제외요일을 제외한 나머지 날짜와 요일을 출력하는 문제이다.

 

논리식으로 시작일과 종료일 사이의 날짜의 요일을 제외요일과 비교하여 같으면 TRUE를 다르면 FALSE값을 반환하므로, FALSE값의 날짜와 요일만 출력하면 되는 문제이다.

 

=LAMBDA(시작일,종료일,제외1,제외2,
LET(
→step1, "입력된 날짜로 date 테이블구성",
date, 시작일+SEQUENCE(종료일-시작일+1,,0),

→step2, "제외1과 제외2 값을 비교하는 함수구성",
f, LAMBDA(r, OR(TEXT(r,"aaaa")=제외1,TEXT(r,"aaaa")=제외2)),

→step3, "date테이블을 순환하면서 함수값이 false인 값이 나오면 하나씩 쌓아나감",
result, REDUCE("", date, LAMBDA(a,v,IF(f(v)=FALSE,VSTACK(a,v),a))),

→step4, "결과출력",
x, DROP(result,1),
HSTACK(x,TEXT(x,"aaaa")))
)(B1,B2,"수요일","금요일")

 

 

최초 LAMBDA로 초기값들을 받은 후, LET 구문에서 값들을 도출하는 코드이다.

 

→step2, "제외1과 제외2 값을 비교하는 함수구성",
f, LAMBDA(r, OR(TEXT(r,"aaaa")=제외1,TEXT(r,"aaaa")=제외2)),

 

해당 함수구문에서 

→step3, "date테이블을 순환하면서 함수값이 false인 값이 나오면 하나씩 쌓아나감",
result, REDUCE("", date, LAMBDA(a,v,IF(f(v)=FALSE,VSTACK(a,v),a))),

 

date 테이블에서 하나씩 값을 입력받아 함수구문에서 반환되는 값이 false인 값들만 쌓아가면서 만들어 가는 코드이다.

 

 

 

우노사설(84).xlsx
0.01MB

댓글