ic


배열=배열+배열 EXCEL/VBA

지난 번에 배열을 다룬 적이 있는데(어쩌다보니 배열 성애자가 된 느낌!), 배열의 차원을 줄이거나 배열의 일부를 떼어 내는 걸 ([참고]배열 슬라이싱#1, 배열 슬라이싱#2, 배열 슬라이싱#3, 뱁새가 황새 따라하다 가랑이 찢어지다)다루었다. 그런데 다시 합치는 짓을 하고 싶었다. 단순히 합치는 걸 하라면 Array()함수를 사용하면 될 듯하다.
    Dim s As Worksheet
Dim arr1(), arr2

Set s = Sheet1

arr1 = s.Range("A1:A15").Value
arr1 = WorksheetFunction.Transpose(arr1)

arr2 = s.[B1:B15]
arr2 = WorksheetFunction.Transpose(arr2)

Dim arr3

arr3 = Array(arr1, arr2)
arr3 = WorksheetFunction.Transpose(arr3)
1차원 배열 두 개를 Array()로 합치고 다시 방향을 바꿔 버리면(Transpose) 만족스럽게도 2차원 배열이 생긴다. 이건 AA건전지를 병렬로 연결한 모양새이다.

그런데 1차원 배열을 나란히 세워 두는 것 말고 길게 AA건전지 두 개를 직렬로 연결하듯이 하려면? 완벽한 방법은 아니지만 다음과 같은 방법이 있다.
arr3 = Split(Join(arr1, ",") & "," & Join(arr2, ","), ",")

Join()함수로 배열의 각 항목으로 연결하고([참고]VBA 배열에 대한 몇 가지 (3)) 다시 Split()함수로 합치는 것이다. 단점은 Split(), Join()함수가 문자열 함수라서 결과값을 문자로 돌려준다는 점이다. 에이, 다시 숫자로 변환하면 되지 뭐~

핑백

  • nØthing specia¡ : 파이썬 따라하기 - 두 개의 배열을 합치기 2018-03-26 22:16:40 #

    ... 이 나올 수 있다. 그래서 키보드로 입력 가능하지 않은 문자중 아스키코드 1번 문자를 사용한 것이다. [덧칠하기] 글을 쓰다보니 비슷한 포스팅을 한 적이 있다. [배열=배열+배열]에서 두 개의 1차원 배열을 합쳐 하나의 배열 2차원 배열을 만들었는데, 이번의 것은 1차원 배열의 원소를 합쳐 1차원 배열을 만드는 것이다. 그리고 (2 ... more

덧글

댓글 입력 영역