다음과 같은 리스트가 주어졌을 때, 중복되지 않은 랜덤한 값 5개를 뽑아내는 문제이다.
랜덤한 값을 뽑아내는 문제는 RAND 함수를 사용하면 되는데, 365에서는 RANDARRAY 함수로 야무지게 뽑아 낼 수 있어 소개하려고 한다.
우선 각 리스트에 랜덤한 값을 부여하는 코드는 이렇다.
=LET(
_tbl,HSTACK(RANDARRAY(COUNTA(C3:D9),1,0,1,0), TOCOL(C3:D9)),
_tbl
)
코드 설명을 하면 리스트 영역만큼 행의 값을 주고, 열값은 1, 최소값 0, 최대값 1인 영역에 정수가 아닌 소수로 구성된 영역이 만들어 지고, 그 옆의 열에는 리스트 값을 한줄로 길게 나열하라는 의미이다.
이렇게 주어진 영역을 LET 함수에서 _tbl로 설정한다.
주어진 랜덤한값에서 5개의 큰값을 뽑아낸다. 아래 코드는 앞서 만든 테이블에서 큰값 1부터 5까지의 값을 열방향으로 나열하라는 의미이다.
LARGE(_tbl,SEQUENCE(,5))
이렇게 구해진 값을 Vlookup으로 구하면 5개의 랜덤한 값을 가져올수 있는데 이것을 TEXTJOIN함수로 마무리를 하게 되면 문제의 결과값처럼 도출되게 된다.
=LET(
_tbl,HSTACK(RANDARRAY(COUNTA(C3:D9),1,0,1,0),TOCOL(C3:D9)),
_key,LARGE(_tbl,SEQUENCE(,5)),
TEXTJOIN(",",,VLOOKUP(_key,_tbl,2,0)))
오늘은 RANDARRAY 함수와 LARGE함수와의 조합을 통한 중복되지 않은 랜덤한 값을 뽑아내는것을 연습해보았다.
'VBA > 365 FUNCTION' 카테고리의 다른 글
[365리뷰] 엑셀365함수와 수식시리즈_84[feat. 우노사설님] (0) | 2024.02.11 |
---|---|
[365리뷰] 칸트차트 만들기[feat. 서랍님] (0) | 2024.02.10 |
[365 함수리뷰] 서랍님 달력리뷰(feat. to_do List) (0) | 2023.10.29 |
[365 함수리뷰] 각행에서 숫자들만 뽑아서 출력하기 (0) | 2023.10.26 |
[365 함수리뷰] 간편차트 만들기 (0) | 2023.10.20 |
댓글