📋 코드 구간별 설명
1. 변수 선언과 범위 설정
- rngAll: B4범위를 선택해 이 범위의 **모든 열(Column)**을 순회할 준비를 한다.
- rngX: 복사한 데이터를 붙여넣을 시작 지점으로 V4 셀이 설정된다.
- Vtemp: 각 열의 데이터를 임시로 저장하는 배열 변수로 사용된다.
- rngA: 반복문에서 각 열을 처리할 임시 변수로 사용된다.
2. 반복문 (For Each)을 통한 열 단위 순회
- **rngAll.Columns**를 사용해 B4범위의 열 단위로 순회한다.
- 매 반복마다 현재 열의 데이터를 배열 형태로 Vtemp에 저장한다.
- 이때, 2차원 배열로 저장되어 각 행의 데이터가 그대로 유지된다.
3. 데이터 복사와 크기 조정
- **rngX.Resize**를 사용해 V4부터 시작하는 셀의 행 크기를 Vtemp 배열 크기에 맞춘다.
- Vtemp에 있는 데이터를 rngX 위치에 복사한다.
4. 복사 위치 이동 (Offset)
- 각 열의 데이터를 복사한 후, rngX를 왼쪽으로 한 열씩 이동시켜 다음 열을 준비한다.
- 이로 인해 열들이 오른쪽에서 왼쪽으로 역순으로 붙여넣어지게 된다.
🧑💻 VBA 코드 예제와 예상 실행 결과
Sub 기초방95()
' 범위 변수 선언 및 초기화: B4부터 K23까지의 셀 범위를 선택
Dim rngAll As Range: Set rngAll = [b4:k23]
Dim rngA ' 열별로 반복문에서 사용할 변수 선언
Dim Vtemp ' 각 열 데이터를 임시로 저장할 변수 선언
Dim rngX As Range: Set rngX = [v4] ' 결과가 복사될 첫 번째 셀 지정 (V4)
' 각 열(Column) 단위로 순회하는 반복문 시작
For Each rngA In rngAll.Columns
' 현재 열의 데이터를 Vtemp에 저장 (2차원 배열 형태)
Vtemp = rngA
' rngX 위치에 Vtemp 데이터를 복사 (크기를 현재 열의 행 수에 맞춰 조정)
rngX.Resize(UBound(Vtemp, 1), 1) = Vtemp
' 다음 결과 위치를 왼쪽 셀로 이동
Set rngX = rngX.Offset(0, -1)
Next rngA ' 모든 열에 대해 반복
End Sub
🎬 코드 실행 결과
원본 데이터 (B4):
100 | 200 | 300 | 400 | ... | 900 |
110 | 210 | 310 | 410 | ... | 910 |
복사된 데이터 (V4부터 역순):
900 | 800 | 700 | 600 | ... | 100 |
910 | 810 | 710 | 610 | ... | 110 |
🚀 365 함수 CHOOSECOLS를 활용한 열 복사와 정렬
1. CHOOSECOLS 함수의 구문
=CHOOSECOLS(배열, 열_번호1, [열_번호2], ...)
- 배열 (array):
데이터를 포함한 범위 또는 배열이다. 예를 들어 B3:K23과 같은 범위가 올 수 있다. - 열_번호:
반환할 열의 번호를 순서대로 나열한다. 1은 첫 번째 열, 2는 두 번째 열을 의미한다. - 중괄호 {} 사용:
여러 열을 선택할 때 쉼표로 구분하거나 중괄호 {}로 묶어 사용할 수 있다.
2. CHOOSECOLS 예제 코드와 결과
=CHOOSECOLS(B3:K23, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
- 결과: K열부터 B열까지의 데이터를 역순으로 추출한다.
출력 예시:
KJI...B
900 | 800 | 700 | ... | 100 |
910 | 810 | 710 | ... | 110 |
3. CHOOSECOLS 사용 팁과 주의사항
- 열 순서 재정렬3번째, 1번째, 2번째 열만 추출한다.
- 동적 배열 지원
이 함수는 동적 배열을 지원해 수식이 자동으로 필요한 범위에 확장된다. - 범위를 벗어난 열 번호
범위 내에 없는 열 번호를 지정하면 #VALUE! 오류가 발생한다.
=CHOOSECOLS(B3:K23, 3, 1, 2)
4. 실무 활용 예제 🚀
- 열 순서 뒤집기
=CHOOSECOLS(B3:K23, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
- 동적 열 선택
SEQUENCE 함수와 결합해 동적으로 열을 선택할 수 있다.=CHOOSECOLS(B3:K23, SEQUENCE(5, , 1, 2))
5. CHOOSECOLS와 유사한 함수 비교
- INDEX 함수
특정 셀이나 범위에서 개별 값을 추출할 때 사용한다.- 차이점: INDEX는 특정 셀의 값을 반환하는 반면, CHOOSECOLS는 열 단위로 데이터를 추출한다.
- FILTER 함수
특정 조건에 맞는 데이터를 필터링한다.- 차이점: FILTER는 조건에 따라 행을 추출하지만, CHOOSECOLS는 열을 선택한다.
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #96 [데이터를 PIVOT 시키기 feat. ADODB] (0) | 2024.10.26 |
---|---|
[기초방] VBA 100제 #95-1 [열을 역순으로 복사 feat. ADODB] (0) | 2024.10.25 |
[기초방] VBA 100제 #94 [ ADODB 데이터조회 ] (6) | 2024.10.20 |
[기초방] VBA 100제 #93 [ 엑셀 테이블 변환 ] (0) | 2024.10.20 |
[기초방] VBA 100제 #92 [ 엑셀 데이터 병합 자동화 ] (4) | 2024.10.18 |
댓글