엑셀 VBA #119 / Dictionary 개체_실무 [VBA]
Range("A1").CurrentRegion.Copy Range("D1")
Range("D1").CurrentRegion.RemoveDuplicates Array(1, 2), xlYes
'array(1,2) : 제거할 인수가 CurrnetRegion영역의 1열과, 2열!!!
'xlYest 영역에 머리글이 포함되어 있음
최종코딩
Sub Pdictionary()
Dim dict As New Scripting.Dictionary
Dim rngS As Range, c As Range
Dim i As Long
Dim s As Variant
Application.ScreenUpdating = False
Columns("D:I").Clear
Range("A1").CurrentRegion.Copy Range("D1")
Range("D1").CurrentRegion.RemoveDuplicates Array(1, 2), xlYes
'array(1,2) : 제거할 인수가 CurrnetRegion영역의 1열과, 2열!!!
'xlYest 영역에 머리글이 포함되어 있음
Set rngS = Range("D2", Cells(Rows.Count, "D").End(xlUp))
For Each c In rngS
If dict.Exists(c.Value) Then
dict(c.Value) = dict(c.Value) & "," & c.Offset(, 1)
Else
dict.Add c.Value, c.Offset(, 1) '딕셔너리명.Add Key값,Item값
'dict 딕셔너리에 c의 key값과,c에서 1열 떨어진(offset(,1)) item값을 넣어라
End If
Next
Set rngt = Range("G1")
For i = 0 To UBound(dict.Items)
s = Split(dict.Items(i), ",") '딕셔너리 각각의 item의 값이 ","로 분리된 값을 임의의 배열방 s에 저장한다.
rngt.Offset(0, i) = dict.Keys(i)
rngt.Offset(1, i).Resize(UBound(s) + 1, 1).Value = Application.Transpose(s)
Next
Columns("C:E").Delete
Application.ScreenUpdating = True
Set dict = Nothing
Set Rng = Nothing
Set c = Nothing
Set rngS = Nothing
Set rngt = Nothing
End Sub
엑셀 VBA #65 / 질문 답변(데이터 취합) [VBA] RemoveDuplicates (Array(1,2)
엑셀 VBA #47 / 중복데이터 처리_1 [VBA]- Removeduplicates. 고급필터. New Collection
https://www.youtube.com/watch?v=SrOrTwZuxXA&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=121
ㅇ
'엑셀로 풀어가는 세상' 카테고리의 다른 글
VBA - Dictionary(Late vs Early Binding) by 우노사설 (0) | 2023.12.23 |
---|---|
[엑셀이뭐니]매크로 기초 11강-Match 함수로 찾기(응용편)/ 중단모드 해제하기/ 엑셀 VBA 기초 (0) | 2023.12.21 |
엑셀 VBA #122 / 헷갈리는 시트, 셀 제어 [VBA] (0) | 2023.12.20 |
엑셀 VBA #126 / Vlookup시리즈2_배열 활용 [VBA] (0) | 2023.12.19 |
엑셀 VBA #118 / Dictionary 개체_기본 [VBA] (0) | 2023.12.19 |
엑셀 VBA #65 / 질문 답변(데이터 취합) [VBA] (0) | 2023.12.19 |
엑셀 VBA #52 / 중복데이터 처리_5 [VBA]-고유항목별 합계구하기 (0) | 2023.12.16 |
엑셀 VBA #51 / 중복데이터 처리_4 [VBA] - 사용자정의함수 (0) | 2023.12.16 |