본문 바로가기

Haja157

[기초방] VBA 100제 #88 [ 리스트에서 해당 월 카운트하기 ] 해당 리스트에서 월별로 카운트를 해야 하는 함수이다. 이런 문제를 vba로 풀려면 행방향으로 진행하면서 각 행의 셀들을 순환하면서 각셀의 월을 구한 다음 그값의 월 대로 구분하여 카운트하면서 리스트를 모두 순환하면 된다. 각설하고 이 문제를 풀려면 이렇다. 행단위로 이동하고 그 이동한 값들을 비교하여 값을 도출하면 된다. 변수를 이용한 LET 함수를 풀면 =BYROW(C4:H53,LAMBDA(a, LET( _월10,SUM(IF(MONTH(a)=10,1,0)), _월11,SUM(IF(MONTH(a)=11,1,0)), "10월 : " &_월10 & " _ " & "11월 : " & _월11 ))) BYROW 함수로 해당 영역을 LAMBDA함수로 넘기게 되고, LET 함수로 각각의 변수에 계산된 결과값을 넘긴.. 2023. 10. 28.
[기초방] VBA 100제 #87 [ MMULT 를 이용한 효율구하기 ] [10 X 3 ] X [ 3 X 1] = [10 X 1] 행렬을 만들면 각자의 효율을 만들 수 있다. 이러한 행렬의 곱을 이해하지 못한다면 실제 행렬의 곱을 우리가 수학적으로 풀어가 듯, 그렇게 반복적으로 순환문으로 돌리면서 합을 구해야 한다. MMULT 참 멋진 녀석 아닌가 ㅋㅋ 2023. 10. 27.
[365 함수리뷰] 각행에서 숫자들만 뽑아서 출력하기 서랍님의 문제이다.. 각행에서 숫자만 뽑아서 나열하는것이다. VBA로 하면 정규식으로 뽑았을 것이다. 최근에도 비슷한 문제를 다룬적이 있어서 그것에 대해서 리뷰는 하지 않겠다. 행 단위로 움직이기 때문에 BYROW 함수를 만지작 거릴수도 있으나, BYROW함수는 배열을 인자로 받아서 하나의 결과값만을 도출한다. 가령 각셀에 값들을 출력하는 문제가 아니라 한셀에 콤마 또는 구분자로 연결된 식의 문제이면 BYROW를 사용하여도 된다. 이버네 서랍님은 영역을 순환하는 함수중 기초방77번에서 다룬 REDUCE함수를 사용하여 문제를 풀었는데, 그 코드에 대해서 리뷰를 해보려면 이렇다. =LET( →step1, 전체영역설정, _r, B4:B6, →step2, 대분류 LAMBDA설정, _f, LAMBDA(x, →st.. 2023. 10. 26.
[기초방] VBA 100제 #85 [ 테이블 pivot] 횡으로 된 테이블을 종으로 변환하는 문제이다. VBA로만 할때는 이런 문제들은 거의 안하다가 최근에 365랑 겸하면서 자꾸 올리게 되어서 피로감을 느낄 수도 있으리라 생각한다. 보통은 이렇게 데이터 전처리를 하거나 해서 VBA로 전처리된 데이터를 가공하는 방법으로 하게 될것이다. 본인 역시도 그러고 있고...해서 이번 리뷰는 전통적인 방식과 vba에서 365 함수식을 어떻게 끌어와서 사용하는지를 리뷰해보려고 한다. 첫번째는 다중 FOR문을 통해서 풀어보았다 행방향과 열방향으로 순환하면서 T열의 마지막행 다음부터 조건에 맞는 데이터를 쌓아 올리는 전통적인 방식이다. 두번째 방식은 365 함수식을 STR 변수로 하나씩 누적해가면서 함수식을 완성해 가는 방식이다. 구분기호 같은 것들은 & + "" 로 감싸줘야.. 2023. 10. 23.