본문 바로가기

엑사남180

[기초방] VBA 100제 #85 [ 테이블 pivot] 횡으로 된 테이블을 종으로 변환하는 문제이다. VBA로만 할때는 이런 문제들은 거의 안하다가 최근에 365랑 겸하면서 자꾸 올리게 되어서 피로감을 느낄 수도 있으리라 생각한다. 보통은 이렇게 데이터 전처리를 하거나 해서 VBA로 전처리된 데이터를 가공하는 방법으로 하게 될것이다. 본인 역시도 그러고 있고...해서 이번 리뷰는 전통적인 방식과 vba에서 365 함수식을 어떻게 끌어와서 사용하는지를 리뷰해보려고 한다. 첫번째는 다중 FOR문을 통해서 풀어보았다 행방향과 열방향으로 순환하면서 T열의 마지막행 다음부터 조건에 맞는 데이터를 쌓아 올리는 전통적인 방식이다. 두번째 방식은 365 함수식을 STR 변수로 하나씩 누적해가면서 함수식을 완성해 가는 방식이다. 구분기호 같은 것들은 & + "" 로 감싸줘야.. 2023. 10. 23.
[기초방] VBA 100제 #84 [ 교차 테이블 만들기] 몇일전에 써봤던 IFNA(목록1, 목록2) 하게 되면 목록들이 해당영역만큼 차지하게 되는데 그걸 한줄로 바꿔서 각각의 위치에 넣어주면 된다. 물론 IFERROR로 해도 된다.. 어찌되었든...음 365-1 =HSTACK(TOCOL(IFNA(B4:B14,TRANSPOSE(D4:D7))),TOCOL(IFNA(TRANSPOSE(D4:D7),B4:B14))) 365-2 =TEXTSPLIT(TEXTJOIN("/",TRUE,TOCOL(B4:B14&","&TRANSPOSE(D4:D7)),","),",","/") VBA vtemp1 = .IfNa(Va, .Transpose(Vb)) vtemp2 = .IfNa(.Transpose(Vb), Va) vtemp1 = Split(.TextJoin(",", , vtemp1), ".. 2023. 10. 20.
[기초방] VBA 100제 #83 [ 테이블 역순으로 출력하기 ] 사진에서 각각의 가격들이 다른건 문제가 랜덤수로 되어 있어서 그때그때 변해서 약간의 차이가 있음...저거 보기 불편한 분들은 가격을 랜덤수가 아닌 값으로 변경하길... 역순으로 출력하면 되기에 너무 어렵게 생각하지 말고 FOR문을 역으로 타면 아주 쉽게 풀 수 있는 문제이다. FOR 문에 STEP이 -1 인건 역순으로 오겠다는 소리이다. 시작은 전체영역의 행의 값부터 -1씩 줄여가면서 1까지 FOR문을 순환하겠다는 뜻이다. 365함수를 잠깐 리뷰하면 =LET( →step1, 영역지정, _range,B5:C30, →step2, 헤더와 / CHOOSEROW의 상수식을 - 붙혀서 배열에서 거꾸로 선택 VSTACK({"품목","가격"},CHOOSEROWS(_range,-SEQUENCE(ROWS(_range))).. 2023. 10. 20.
[기초방] VBA 100제 #82 [ 테이블 정렬 + 합계구하기 ] 표를 정렬하고 합계를 구하는 문제이다. 이문제는 365 함수의 MAKEARRAY + 테이블 정렬을 복습하는 차원으로 만들었다. =HSTACK( MAKEARRAY(ROWS($B$4:$F$13),COLUMNS($B$4:$F$13), LAMBDA(r,c,INDEX(SORT(INDEX($B$4:$F$13,r,),,,1),c))), BYROW(B4:F13,LAMBDA(s,SUM(s))) ) 이문제의 관건은 역시나 가로행의 정렬이었는데 시훈아빠님께서 정말 놀라운 꿀팁으로 풀어버렸다. 코드는 이렇다. SMALL 함수로 정렬을 하는 TRICK을 선보였다...지림 시훈 아빠님의 코드를 참고하여 본인 코드를 공개하려고 한다 하나는 셀기반으로 출력을 한거구 또 하나는 TEXTSPLIT + 배열상수 방식을 VBA로 풀어낸 것.. 2023. 10. 20.