demetre
05-26-2024, 06:48 PM
Hi All, I’m having difficulty working out how to sum (column) across multiple columns (criteria) and then delete those records except for one record (contains the sum).
SourceFile
Classification
FullName
Type
Date
AmountLocal
Country
AmountRegion
Region
ABG
AlphaBetaGamma
White
18/01/2024
5.00
GER
6.50
AUS
ABG
AlphaBetaGamma
White
18/01/2024
7.00
GER
9.00
AUS
ABG
AlphaBetaGamma
Blue
18/01/2024
5.00
GER
6.50
AUS
ABC
AlphaBetaCorr
Green
19/01/2024
3.50
GER
5.00
AUS
PseudoCode
Where multiple (same date) records exists (criteria: FullName, Date, Type) sum (criteria: AmountLocal), keep one record (where used for sum) and delete other records (used in sum) but leave existing (other non impacted) records
As per above
2x dupe dates per FullName per Type, sum {5.00, 7.00}
And output I'm aiming for is
Classification
FullName
Type
Date
AmountLocal
Country
AmountRegion
Region
ABG
AlphaBetaGamma
White
18/01/2024
12.00
GER
15.50
AUS
ABG
AlphaBetaGamma
Blue
18/01/2024
5.00
GER
6.50
AUS
ABC
AlphaBetaCorr
Green
19/01/2024
3.50
GER
5.00
AUS
I've tried SUMIFS, SUMPRODUCT but cannot get it to work.
Any and all help appreciated; thank you.
Sub sumData()
Dim ws As Worksheet
Dim As lLastRow As Long
Dim sumRange As Range, partyRange as Range, typeRange As Range, dateRange As Range
Set ws = ThisWorkbook.Sheets("SourceFiles")
With ws
lLastRow = .Cells(.Row.Count, "B").End(xlUp).Row 'Define last row
set partyRange = ws.Range("B2:B" & lLastRow)'Party name
set typeRange = ws.Range("C2:C" & lLastRow)'Type name
set dateRange = ws.Range("D2:D" & lLastRow)'Date range
set sumRange = ws.Range("E2:E" & lLastRow)'Costs range
'Find records which Name + same Date + same Type > 1 record
'Sum the Costs into "E2:E"
'I tried and other methods
.Range("M2:M" & lLastRow) = WorksheetFunction.SumIfs(partyRange, typeRange, dateRange, sumRange)
'Delete other duplicate rows
End Sub
SourceFile
Classification
FullName
Type
Date
AmountLocal
Country
AmountRegion
Region
ABG
AlphaBetaGamma
White
18/01/2024
5.00
GER
6.50
AUS
ABG
AlphaBetaGamma
White
18/01/2024
7.00
GER
9.00
AUS
ABG
AlphaBetaGamma
Blue
18/01/2024
5.00
GER
6.50
AUS
ABC
AlphaBetaCorr
Green
19/01/2024
3.50
GER
5.00
AUS
PseudoCode
Where multiple (same date) records exists (criteria: FullName, Date, Type) sum (criteria: AmountLocal), keep one record (where used for sum) and delete other records (used in sum) but leave existing (other non impacted) records
As per above
2x dupe dates per FullName per Type, sum {5.00, 7.00}
And output I'm aiming for is
Classification
FullName
Type
Date
AmountLocal
Country
AmountRegion
Region
ABG
AlphaBetaGamma
White
18/01/2024
12.00
GER
15.50
AUS
ABG
AlphaBetaGamma
Blue
18/01/2024
5.00
GER
6.50
AUS
ABC
AlphaBetaCorr
Green
19/01/2024
3.50
GER
5.00
AUS
I've tried SUMIFS, SUMPRODUCT but cannot get it to work.
Any and all help appreciated; thank you.
Sub sumData()
Dim ws As Worksheet
Dim As lLastRow As Long
Dim sumRange As Range, partyRange as Range, typeRange As Range, dateRange As Range
Set ws = ThisWorkbook.Sheets("SourceFiles")
With ws
lLastRow = .Cells(.Row.Count, "B").End(xlUp).Row 'Define last row
set partyRange = ws.Range("B2:B" & lLastRow)'Party name
set typeRange = ws.Range("C2:C" & lLastRow)'Type name
set dateRange = ws.Range("D2:D" & lLastRow)'Date range
set sumRange = ws.Range("E2:E" & lLastRow)'Costs range
'Find records which Name + same Date + same Type > 1 record
'Sum the Costs into "E2:E"
'I tried and other methods
.Range("M2:M" & lLastRow) = WorksheetFunction.SumIfs(partyRange, typeRange, dateRange, sumRange)
'Delete other duplicate rows
End Sub