Dictionary방식( Late Binding & Early Binding)
1. Late Binding : 'MicroSoft Scripting Runtime'체크확인 불필요
Sub usedictionary()
Dim rDatas As Range
Dim oDic As Object '일단 범용 Object로 선언 후
Dim rRow As Range
Dim sKey As String
Dim iItem As Integer
Dim ix As Integer
Set rDatas = Worksheets("Sales").Range("A1").CurrentRegion
Set rDatas = rDatas.Offset(1).Resize(rDatas.Rows.Count - 1)
Set oDic = CreateObject("scripting.Dictionary") 'Dictionary로 지정한다.
For Each rRow In rDatas.Rows
sKey = rRow.Cells(3)
iItem = rRow.Cells(4)
If Not oDic.exists(sKey) Then
oDic.Add sKey, iItem
Else
oDic(sKey) = oDic(sKey) + iItem
End If
Next
With Range("H1")
For ix = 0 To oDic.Count - 1
.Offset(ix) = oDic.keys()(ix) ()() 반드시 지켜야 한다.
.Offset(ix, 1) = oDic.items()(ix) ()() 반드시 지켜야 한다.
Next
End With
End Sub
https://www.youtube.com/watch?v=wKbOZpZ9vVQ
2. Early Binding : 'MicroSoft Scripting Runtime'체크확인 필요
Sub usedictionary2()
Dim rDatas As Range
Dim oDic As Scripting.Dictionary
Dim rRow As Range
Dim sKey As String
Dim iItem As Integer
Dim ix As Integer
Set rDatas = Worksheets("Sales").Range("A1").CurrentRegion
Set rDatas = rDatas.Offset(1).Resize(rDatas.Rows.Count - 1)
Set oDic = New Dictionary
For Each rRow In rDatas.Rows
sKey = rRow.Cells(3)
iItem = rRow.Cells(4)
If Not oDic.exists(sKey) Then
oDic.Add sKey, iItem
Else
oDic(sKey) = oDic(sKey) + iItem
End If
Next
With Range("H1")
For ix = 0 To oDic.Count - 1
.Offset(ix) = oDic.keys(ix) ()() or () 둘 중 하나 사용해도 된다.
.Offset(ix, 1) = oDic.Items(ix) ()() or () 둘 중 하나 사용해도 된다.
Next
End With
End Sub
https://www.youtube.com/watch?v=aFKrdTGgUT8
https://raymond.tistory.com/2246
엑셀 VBA #118 / Dictionary 개체_기본 [VBA]
'엑셀로 풀어가는 세상' 카테고리의 다른 글
엑셀 VBA #93 / 특정 폴더 내, 파일통합_VBA필수 [VBA] (0) | 2024.01.04 |
---|---|
엑셀 VBA #90 / 데이터재배치 [VBA] (0) | 2023.12.31 |
엑셀 VBA #85 / 이벤트 프로시저와 find 메서드 활용하기 [VBA] (1) | 2023.12.30 |
엑셀 VBA #127 / Vlookup시리즈3_배열+Dictionary활용 [VBA] (0) | 2023.12.28 |
[엑셀이뭐니]매크로 기초 11강-Match 함수로 찾기(응용편)/ 중단모드 해제하기/ 엑셀 VBA 기초 (0) | 2023.12.21 |
엑셀 VBA #122 / 헷갈리는 시트, 셀 제어 [VBA] (0) | 2023.12.20 |
엑셀 VBA #126 / Vlookup시리즈2_배열 활용 [VBA] (0) | 2023.12.19 |
엑셀 VBA #119 / Dictionary 개체_실무 [VBA] (0) | 2023.12.19 |