I'm sure there's a variety of ways; I went with an advanced filter of unique values of Column C and then just made a SUMIF of those values.
Sub andrewc()
'dimension variables
Dim lngLastSource As Long, lngLastSummary
Dim wsData As Worksheet: Set wsData = Sheets("data")
Dim wsSummary As Worksheet: Set wsSummary = Sheets("Summary")
'clear summary
wsSummary.Range("A1").CurrentRegion.ClearContents
'identify max row of source
lngLastSource = wsData.Range("A" & Rows.Count).End(xlUp).Row
'filter unique countries
wsData.Range("C1:C" & lngLastSource).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=wsSummary.Range("A1"), Unique:=True
'create total column header
wsSummary.Range("B1") = "Total"
'identify max row of uniques
lngLastSummary = wsSummary.Range("A" & Rows.Count).End(xlUp).Row
'loop through all uniques
For i = 2 To lngLastSummary
'sumif for each
wsSummary.Cells(i, 2) = WorksheetFunction.SumIf(wsData.Range("C2:C" & lngLastSource), _
wsSummary.Cells(i, 1), _
wsData.Range("B2:B" & lngLastSource))
Next
End Sub
A loop could to simply run a continuous sum would probably work as well.
Bookmarks