본문 바로가기

서랍8

[365 함수리뷰] 각행에서 숫자들만 뽑아서 출력하기 서랍님의 문제이다.. 각행에서 숫자만 뽑아서 나열하는것이다. VBA로 하면 정규식으로 뽑았을 것이다. 최근에도 비슷한 문제를 다룬적이 있어서 그것에 대해서 리뷰는 하지 않겠다. 행 단위로 움직이기 때문에 BYROW 함수를 만지작 거릴수도 있으나, BYROW함수는 배열을 인자로 받아서 하나의 결과값만을 도출한다. 가령 각셀에 값들을 출력하는 문제가 아니라 한셀에 콤마 또는 구분자로 연결된 식의 문제이면 BYROW를 사용하여도 된다. 이버네 서랍님은 영역을 순환하는 함수중 기초방77번에서 다룬 REDUCE함수를 사용하여 문제를 풀었는데, 그 코드에 대해서 리뷰를 해보려면 이렇다. =LET( →step1, 전체영역설정, _r, B4:B6, →step2, 대분류 LAMBDA설정, _f, LAMBDA(x, →st.. 2023. 10. 26.
[365 함수리뷰] 해당기간의 [월]을 표시 이번에 리뷰해볼 수식은 서랍님이 엑사남 방에 올려주신 시작일과 종료일사이에 해당하는 월을 O으로 표기하는 수식을 리뷰해 보려고 한다. 시작일과 종료일의 날짜의 차이에 +1을 하는 이유는 시작일 : 2016-03-25 종료일 : 2023-06-05 라고 할때, 2023 - 2016의 차는 7이지만 실제로는 8부터이기 때문에 모든 날짜 계산에 +1을 해야한다. _day_list, UNIQUE(EOMONTH(SEQUENCE(_end - _start + 1, , _start), -1) + 1), 두기간 사이의 날짜를 구해서 그 날짜들의 EOMONTH(날짜 , -1)를 구하면 전월의 마지막이 나오게 되는데 그 값의 +1을 하게되면 결국 해당월의 처음을 구할 수 있고 그 값들의 고유값을 구하게 되면 각 해당 월에 .. 2023. 10. 19.
[365 함수리뷰] PIVOT 구현하기 서랍님의 코드 리뷰이다. 더보기 LAMBDA(range, TRANSPOSE( IFERROR(HSTACK(UNIQUE(CHOOSECOLS(range, 1)), DROP(REDUCE("", UNIQUE(CHOOSECOLS(range, 1)), LAMBDA(acc, val, VSTACK(acc, TRANSPOSE(FILTER(CHOOSECOLS(range, 2), val = CHOOSECOLS(range, 1)))))), 1)), "") ) )(A4:B49) * 서랍님 수식 리뷰 1. LAMBDA // 함수선언 범위는 9행의 (A4:B49) 2. TRANSPOSE // 행렬 변환 3. IFERROR(...) // 에러처리 HSTACK(이름,담당구역 ) // 이름과 담당구역을 수평으로 나열 UNIQUE(CHOO.. 2023. 10. 18.
[365 함수리뷰] 동적으로 출력되는 테이블 본인의 365 함수 코드들은 기초방에 올리고 있기 때문에 따로 서랍님 코드를 리뷰해보려고 한다. 더보기 =LAMBDA(range, n, [op], LET( _range, range, _n, n, _op, IF(ISOMITTED(op), 1, op), _rn, TAKE(_range, , 1), _rm, DROP(_range, , 1), _u, UNIQUE(_rn), TAKE(SORT(HSTACK(_u, SUMIFS(_rm, _rn, _u)), 2, IF(_op = 1, -1, 1)), _n) ) )(G7:H90, C3) 이번 코드의 핵심은, _rn, TAKE(_range, , 1), _rm, DROP(_range, , 1), TAKE 와 DROP으로 한번은 선택해서 취하고 한번은 선택해서 버리는 코드 전개.. 2023. 10. 16.