엑셀 VBA #49 / New Collection_버블정렬의 콜라보 [VBA]
Dim nc As New Collection
Dim rng As Range, c As Range
Dim a() As Variant
Dim i As Long
Set rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))
'----------------------------
'고유목록 추출
'----------------------------
On Error Resume Next
For Each c In rng
If Len(c) Then
nc.Add Trim(c), CStr(Trim(c))
End If
Next
On Error GoTo 0
'---------------------------
'배열에 넣기(dc에서 저장하고 있는 고유목록을 동적배열a에 넣기)
'---------------------------
ReDim a(nc.Count - 1)
For i = 0 To nc.Count - 1
a(i) = nc(i + 1)
Next
'---------------------------
'동적배열a에 있는 값을 뿌리기
'---------------------------
Range("C1").Resize(1, UBound(a) + 1) = a
Range("B1").Resize(UBound(a) + 1, 1) = Application.Transpose(a)
위 결과값 그림상의 고유항목들이 오름 or 내림차순 정렬이 아니다.
이를 오름차순 정렬한 코드는 다음과 같다.
Dim nc As New Collection
Dim rng As Range, c As Range
Dim a() As Variant
Dim i As Long, j As Long
Dim temp As Variant
.................
'---------------------------
'배열에 넣기(dc에서 저장하고 있는 고유목록을 동적배열a에 넣기)
'---------------------------
ReDim a(nc.Count - 1)
For i = 0 To nc.Count - 1
a(i) = nc(i + 1)
Next
'---------------------------
'정렬(버블정렬)
'---------------------------
For i = 0 To dc.Count - 2
For j = i + 1 To dc.Count - 1
If a(i) > a(j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next
Next
'---------------------------
'동적배열a에 있는 값을 뿌리기
'---------------------------
Range("C1").Resize(1, UBound(a) + 1) = a
Range("B1").Resize(UBound(a) + 1, 1) = Application.Transpose(a)
https://www.youtube.com/watch?v=uuyRUNZC2GE&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=49
'엑셀로 풀어가는 세상' 카테고리의 다른 글
엑셀 VBA #65 / 질문 답변(데이터 취합) [VBA] (0) | 2023.12.19 |
---|---|
엑셀 VBA #52 / 중복데이터 처리_5 [VBA]-고유항목별 합계구하기 (0) | 2023.12.16 |
엑셀 VBA #51 / 중복데이터 처리_4 [VBA] - 사용자정의함수 (0) | 2023.12.16 |
엑셀 VBA #50 / 중복데이터 처리_3 [VBA]-Union (0) | 2023.12.15 |
엑셀 VBA #48 / 중복데이터 처리_2 [VBA] - 신규항목 추출 (0) | 2023.12.15 |
엑셀 VBA #47 / 중복데이터 처리_1 [VBA]- Removeduplicates. 고급필터. New Collection (0) | 2023.12.15 |
엑셀 VBA #46 / Replace 메서드 [VBA] - 유령문자 (0) | 2023.12.15 |
엑셀 VBA #45 / Find메서드_변형3 [VBA] - 중복표시 (0) | 2023.12.15 |