본문 바로가기

VBA271

[기초방] VBA 100제 #78 [ 열선택하여 조건에 맞는값 출력 ] 원본테이블에서 일부열을 선택 후 조건에 맞는 값을 도출하는 문제이다. 이런 문제에 FILTER함수가 너무 특화되어 있기 때문에 이러한 문제는 365 사용자라면 VBA까지 들어오지 않을 것같다. 단 한줄.... =SORT(FILTER(FILTER(A4:F80,F4:F80>J3),{0,1,0,0,1,0}),2) 물론 이중 FILTER대신 CHOOSECOLS를 사용해도 된다. 여하튼 이번 문제의 핵심은 아래 구문인데, 이해가 잘 안되시는 분은 본인의 포스팅 중 배열 슬라이싱에 대해서 한번 더 짚고 오길 바란다. https://1stminokingdom.tistory.com/153 [VBA] 배열 슬라이싱(feat. 배열맛집) 오늘은 배열 슬라이싱에 관해서 알아보자. 본인이 쓴글에 간간히 배열 슬라이싱에 관해서.. 2023. 10. 19.
[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.
[기초방] VBA 100제 #77 [ 고유값 pivot ] 고유값을 Pivot 하는 문제이다. 이문제의 관건은 담당자의 고유값을 세로에서 가로로 뿌린 후 FILER함수를 이용하여 값을 구할 수 있느냐에 있다. 통상 FILTER함수는 = FILTER(배열, 조건, [못찾을때]) 이것을 VBA 식으로 표현하면 With Application V = Application.Filter(rngAll.Columns(2), rngAll.Columns(1) = rngA, "not Found")) rngA(2, 1).Resize(UBound(V, 1), 1) = V End With 이렇게 하면 될것 같지만 해당되지 않는다. FILTER함수의 부분일치값을 가져오는 ISNUMBER + SEARCH 조합으로 구하면 해결된다. For Each rngA In rngF With Applic.. 2023. 10. 17.