split (2)
엑셀 VBA #119 / Dictionary 개체_실무 [VBA]
반응형

엑셀 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#119.xlsm
0.02MB


엑셀 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

반응형
  Comments,     Trackbacks
엑셀 VBA #29 / VBA함수(split) [VBA]
반응형

엑셀 VBA #29 / VBA함수(split) [VBA]

1. 목적 : VBA함수 Split 사용법 습득
2. Split함수 구조
VBA.Split(대상,구분자)   또는
Split(대상, 구분자)

3. 사용
  3.1. For~Next문
    Dim s As Variant
    Dim i As Long

    s = Split(Range("A2"), " ")

    For i = 0 To UBound(s)
        Cells(i + 5, "A") = s(i)
    Next

  3.2. For Each~Next문
    Dim s As Variant
    Dim j As Long

    For Each s In Split(Range("A2"), " ")
        Cells(j + 5, "A") = s
        j = j + 1
    Next

 



@ayje5718   2년 전
좋은강의 잘 보고 있습니다. 감사합니다. 이전 강의에서 동적 배열을 선언하는 영상을 보고 해당 영상을 보니 갑자기 헷갈립니다 ㅠ 변수방에 값을 받아 배열로 출력하는부분에 동적 배열을 선언해 사용한다고 생각했는데 아니네요 ㅠ 그럼 변수에 배열을 선언하는건 어떤 경우인가요
      @user-dq4gc5hl5j   2년 전
      안녕하세요, 반갑습니다 :)
       프로시저의 처리속도를 높이기 위해서는 배열 사용이 필수입니다. 
       그런데 배열을 이해하고, 실무에 적용하는데 시간이 조금 소요됩니다.
       한번에 이해가 안되도 조급해하지 마시고
       여러 코딩 경험을 통해 배열 개념이 정리되는 시간을 주셔요^^
       먼저 VBA #126 영상을 살펴보시길 추천합니다.

 

 


https://www.youtube.com/watch?v=OCbhs5a71ZQ&list=PLfxvqpVCYZ8e0qlyc_FU46neoWjO7yTWj&index=29

반응형
  Comments,     Trackbacks
최근 작성 글
최근 작성 댓글
최근 작성 트랙백
프로필
공지사항
글 보관함
캘린더
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
TODAY TOTAL