횡으로 된 테이블을 종으로 변환하는 문제이다.
VBA로만 할때는 이런 문제들은 거의 안하다가 최근에 365랑 겸하면서 자꾸 올리게 되어서 피로감을 느낄 수도 있으리라 생각한다.
보통은 이렇게 데이터 전처리를 하거나 해서 VBA로 전처리된 데이터를 가공하는 방법으로 하게 될것이다.
본인 역시도 그러고 있고...해서 이번 리뷰는 전통적인 방식과 vba에서 365 함수식을 어떻게 끌어와서 사용하는지를 리뷰해보려고 한다.
첫번째는 다중 FOR문을 통해서 풀어보았다
행방향과 열방향으로 순환하면서 T열의 마지막행 다음부터 조건에 맞는 데이터를 쌓아 올리는 전통적인 방식이다.
두번째 방식은
365 함수식을 STR 변수로 하나씩 누적해가면서 함수식을 완성해 가는 방식이다.
구분기호 같은 것들은 & + "" 로 감싸줘야 하며, 쌍따옴표로 들어가 있는 것은 쌍따옴표 역시도 쌍따옴표로 감싸줘야 해서 ";" 이런식이면 """;""" 이런식으로 감싸주면 된다. 정리하면
TEXTJOIN(";" , , "문자")
"TEXTJOIN(" & """;""" & "," & "," & """문자""" & ")"
이런식으로 변경하면 된다.
마지막은 365 함수식을 단계별로 누적해서 오는것이 아니라 함수식 자체를 가져오는 방식이다.
이게 가능한 이유는 LET함수를 쓰면 엑셀 함수식도 변수를 사용가능하기 때문에 엑셀 함수식 자체를 가져오는 것보다 길이가 훨씬 짧아지고, 가독성도 높아지기 때문에 도전 해 볼만하다.
뭔가 복잡하고 어렵게 느끼겠지만 그냥 저 쌍따옴표의 지옥에서만 벗어나면 가독성이 그리 떨어져 보이진 않을것이다.
sql문 하나 짜주는데 몇십또는 몇백 몇천을 받기도 한다..
중첩된 sql문도 있고 여러 형태의 형태의 sql문도 있는데...
보통 이런형태이다.
그러니 엑셀 함수식을 VBA에 적용하는것에 대해서 너무 스트레스를 받지 않기를 바란다.
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #87 [ MMULT 를 이용한 효율구하기 ] (0) | 2023.10.27 |
---|---|
[기초방] VBA 100제 #86 [ MMULT 를 이용한 행렬만들기 ] (0) | 2023.10.26 |
[기초방] VBA 100제 #84 [ 교차 테이블 만들기] (2) | 2023.10.20 |
[기초방] VBA 100제 #83 [ 테이블 역순으로 출력하기 ] (0) | 2023.10.20 |
[기초방] VBA 100제 #82 [ 테이블 정렬 + 합계구하기 ] (0) | 2023.10.20 |
댓글