| 
    
     |  | dictionaryの練習に作ってみました。 sheet1に
 A    B    C    D
 1    氏名    住所    支払い金額    振込口座
 2    A    福岡県    20000    000123456
 3    B    大分県    30000    002345678
 4    C    佐賀県    30000    003456789
 5    D    北海道    50000    005677821
 6    A    福岡県    40000    000123456
 7    E    東京都    20000    009876532
 8    B    大分県    10000    002345678
 9    F    静岡県    20000    000435621
 10    A    福岡県    20000    000123456
 11    G    新潟県    70000    000986789
 12    A    福岡県    20000    000123456
 13    H    福島県    30000    009684522
 14    I    三重県    40000    056783423
 15    D    北海道    50000    005677821
 16    J    愛媛県    10000    000243627
 17    D    北海道    50000    005677821
 18    K    秋田県    10000    024246457
 19    E    東京都    20000    009876532
 20    L    広島県    35000    057645784
 21    M    大阪府    28000    056457358
 22    E    東京都    20000    009876532
 
 このようなデータがあるとして
 結果は
 A    B    C    D
 1    氏名    住所    支払い金額    振込口座
 2    A    福岡県    100000    000123456
 3    B    大分県    40000    002345678
 4    C    佐賀県    30000    003456789
 5    D    北海道    150000    005677821
 6    E    東京都    60000    009876532
 7    F    静岡県    20000    000435621
 8    G    新潟県    70000    000986789
 9    H    福島県    30000    009684522
 10    I    三重県    40000    056783423
 11    J    愛媛県    10000    000243627
 12    K    秋田県    10000    024246457
 13    L    広島県    35000    057645784
 14    M    大阪府    28000    056457358
 
 のような感じになります。
 コードは、
 Sub test()
 Dim myDic As Object
 Dim myR As Range, r As Range
 Dim myVal As Variant
 Dim myAry(3) As Variant
 
 Application.ScreenUpdating = False
 With Sheets("Sheet1")
 myVal = .Range("A1").Resize(, 4).Value
 Set myDic = CreateObject("Scripting.Dictionary")
 Set myR = .Range("A2", .Range("A65536").End(xlUp))
 
 For Each r In myR
 If Not myDic.Exists(r.Value & r.Offset(, 3).Value) Then
 myAry(0) = r.Value
 myAry(1) = r.Offset(, 1).Value
 myAry(2) = r.Offset(, 2).Value
 myAry(3) = r.Offset(, 3).Value
 myDic(r.Value & r.Offset(, 3).Value) = myAry
 Else
 myAry(0) = r.Value
 myAry(1) = r.Offset(, 1).Value
 myAry(2) = myDic(r.Value & r.Offset(, 3).Value)(2) + r.Offset(, 2).Value
 myAry(3) = r.Offset(, 3).Value
 myDic(r.Value & r.Offset(, 3).Value) = myAry
 End If
 Next
 .Cells.ClearContents
 With .Range("A1")
 .Resize(, 4).Value = myVal
 .Offset(1).Resize(myDic.Count, 4).Value = _
 Application.Transpose(Application.Transpose(myDic.items))
 End With
 End With
 Application.ScreenUpdating = True
 Set myDic = Nothing
 End Sub
 
 "Scripting.Dictionary"で過去ログを検索すれば、いろいろ出てくると思います。
 参考になればよいのですが・
 
 |  |