나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 참서리 (k5953)

추천:  2
파일:     중복값제거후 합치기_col_And_Dic.xlsm (53.5KB) 조회:  1845
제목:   [RE]중복값 제거 후 값합치기
     
  Option Explicit

'---------------------------------------------
Sub rearrange()
'---------------------------------------------    
    Dim colX As Collection
    Dim oDic As Scripting.Dictionary: Set oDic = New Scripting.Dictionary
    
    Dim rngX As Range: Set rngX = Range("A2").CurrentRegion
    Dim vData As Variant: vData = rngX.Offset(1).Resize(rngX.Rows.Count - 1).Value
    Dim sKey As String, r As Long
    Dim vMoney As String, vSubject As String
    
    'Stop
    
    '----------------------------
    For r = 1 To UBound(vData, 1)
    '----------------------------
    
            sKey = Join(Array(vData(r, 2), vData(r, 3), vData(r, 4), vData(r, 5)), "-")
            
            '----------------------------
            If oDic.Exists(sKey) Then 'exist key
            '----------------------------
            
            'Stop
                Set colX = oDic.Item(sKey)
               
               ' Add Money
              ' colX.Item("Money") = colX.Item("Money") & "+" & vData(r, 6)
               
                vMoney = colX.Item("Money") & "+" & vData(r, 6)
                colX.Remove "Money"
                colX.Add vMoney, "Money"
                
                'Add Subject
                vSubject = colX.Item("Subject") & "/" & vData(r, 8)
                colX.Remove "Subject"
                colX.Add vSubject, "Subject"
               
            '-----------------------------
            Else
            '-----------------------------
                Set colX = New Collection
                colX.Add vData(r, 6), key:="Money"
                colX.Add vData(r, 8), key:="Subject"
                oDic.Add sKey, colX
                
                'Stop
                
        End If

    Next r
    
    'Stop
    
    
    Dim key As Variant
    
    Dim rTarget As Range: Set rTarget = Range("A20")
    Dim iR As Long: iR = 1
    
    
    
    '-------------------------------------
    For Each key In oDic.Keys
    '-------------------------------------
    
        Debug.Print key
        vMoney = oDic.Item(key).Item("Money")
        vSubject = oDic.Item(key).Item("Subject")
        
        
        rTarget.Offset(0, 1).Resize(1, 4).Value = Split(key, "-")
        rTarget.Offset(0, 5).Value = Evaluate(vMoney)
        rTarget.Offset(0, 7).Value = vSubject
        
        rTarget.Value = iR
        iR = iR + UBound(Split(vSubject, "/")) + 1
        
        Set rTarget = rTarget.Offset(1, 0)
        
    '-------------------------------------
    Next
    '-------------------------------------
    
End Sub
 
[불량 게시물 신고]  
참서리다음 주소에 자세히 설명되어 있습니다.
https://youtu.be/LYoYT3A9l64
04-11 (18:46)
삭제 ■신고
        
  

작성일 : 2019-04-11(18:43)
최종수정일 : 2019-04-11(18:43)
 


 ◎ 관련글

  제 목   작성자   날짜
중복값 제거 후 값합치기 이미영 2019-04-10
[RE]중복값 제거 후 값합치기 참서리 2019-04-12
[RE]중복값 제거 후 값합치기 참서리 2019-04-11
[RE]중복값 제거 후 값합치기 dew 2019-04-10