본문 바로가기

ArrayToText5

[기초방] VBA 100제 #86 [ MMULT 를 이용한 행렬만들기 ] 이문제는 사실 SUMIFS로 풀면된다. SUMIFS의 조건식에 *&조건&* 이렇게 와일드카드를 이용해서 조건이 포함된 셀의 값을 가져오게 된다. 365 함수를 계속 풀고 있었기 때문에 이렇게 접근을 안하겠지 했지만.. 역시 걸렸다....ㅜ.,ㅡ 이번 문제를 풀면서 MATRIX[행렬]에 대해서 왜 중요한지 알게 된 시간이다. 서랍님은 참 사고의 깊이가 넘사벽임을 또한번 느꼈다. 이런 대화 너무 좋다...크윽 솔직하게 이게 왜 SUMIF 같은 역할을 하게 되는지 행렬의 곱 이야기가 나오기 전까지 전혀 이해를 못하고 있었다. =MMULT(--ISNUMBER(SEARCH(G4:G8,TRANSPOSE(C4:C54))),D4:D54) 1. SEARCH(G4:G8,TRANSPOSE(C4:C54)) 2. --ISNUM.. 2023. 10. 26.
[기초방] VBA 100제 #81 [ 테이블 형태 변경하기 ] =HSTACK(TOCOL(IFERROR(B4:B8,C3:G3)),TOCOL(IFERROR(C3:G3,B4:B8)),TOCOL(C4:G8)) 동일 =HSTACK(TOCOL(IFNA(B4:B8,C3:G3)),TOCOL(IFNA(C3:G3,B4:B8)),TOCOL(C4:G8)) 같은 크루인 준빠님이 올려주신 VBA는 이렇다. 순차적으로 하나씩 배열에 담아서 행에 뿌려주고를 반복하는 형태의 코드이다. 성격처럼 깔끔하다. ARRRAYTOTEXT를 이용한 함수식으로 완성된 VBA코드는 이렇다 흠.... VBA짜지 마세요!!! 365에 양보하세요 2023. 10. 19.
[기초방 [기초방] VBA 100제 #72 [ 조건에 맞는 숫자 반환 및 정렬 ] 영역을 순환하면서 50보다 큰 수를 vtemp 배열에 담아라 or Each rngA In rngAll If rngA > 50 And TypeName(Application.Match(rngA, vtemp, 0)) = "Error" Then i = i + 1 vtemp(i, 1) = rngA End If Next rngA 이렇게 하면 vtemp 에 50보다 큰 값들이 모두 쌓이게 되고 / i 변수에는 실제 숫자가 몇개 담겨 있는지 그 갯수가 나온다. 자 여기서 가장 핵심구문이다. 반환되는 영역이 11 x 4 이지 여기에 정확하게 50보다 큰수가 몇개 들어갈지는 모른다. 구해보면 11 x 4 = 44개중 실제로 값은 42개만 들어가게 된다. 그렇다면 vtemp(43,1) 과 vtemp(44,1) 의 값은 비어.. 2023. 10. 12.
[기초방] VBA 100제 #70 [ 구간별 값 구하기 ] 우노사설님의 강의를 리뷰한 문제이다. https://www.youtube.com/watch?v=5X_NhTJUpGM 본인의 코드 진행이 이해가 안된다면 강의를 보고 진행하는것을 추천한다. 이번 문제는 테이블에서 각 구간에 해당되는 값들의 갯수를 출력하는 문제이다. 그러기 위해서는 일단 양수라는 조건하에 테이블의 최대값을 구한 후, 그것을 CEILING_MATH 함수로 각 조건의 STEP의 배수로 재조정하여야 한다. MaxVal = .Ceiling_Math(.Max(rngAll), Step) 이렇게 구해진 값으로, 각 구간을 SEQUENCE로 분리해야 한다. 아래의 코드는 SEQUENCE함수로 구한 값을 ARRAYTOTEXT로 배열상수화 시키는 구문이다. Vlist = .ArrayToText(.Sequen.. 2023. 10. 2.