If column = value sum another column and place result in cell

S

S Himmelrich

I've edited the following code based on some of the ideas that I've
seen on this group. Ultimately I would like to evaluate two colums
for specific values and if those values are true then sum two other
columns. So basically I have two totals as a result. For testing
how
to do this I'm working with one column for eval and one column for
total as shown below, however it's providing me a #NAME? in cel J1
'We use the ActiveSheet but you can replace this with
With ActiveSheet
'define varibles for data
Dim ncgwsuactuals As Long
Dim ncgwsuallocated As Long
ncgwsuactuals = 0
ncgwsuallocated = 0
'We select the sheet so we can change the window view
.Select
'If you are in Page Break Preview Or Page Layout view go
'back to normal view, we do this for speed
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
'Turn off Page Breaks, we do this for speed
.DisplayPageBreaks = False
'Set the first and last row to loop through
Firstrow = .UsedRange.Cells(1).Row + 1
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'We loop from Lastrow to Firstrow (bottom to top)
For Lrow = Lastrow To Firstrow Step -1
If .Cells(Lrow, "D").Value = "146268" Or _
.Cells(Lrow, "D").Value = "146269" Or _
.Cells(Lrow, "D").Value = "146270" Or _
.Cells(Lrow, "D").Value = "133957" Then .Cells(Lrow,
"G").Value = ncgwsuactuals + ncgwsuactuals
Next Lrow
With Range("J1")
.FormulaArray = "=ncgwsuactuals"
.Calculate
.Value = .Value
End With
End With
 
J

Jim Thomlinson

A better expanation of what you are wanting to accomplish is in order. Your
code just does not make sense in a bunch of different respects. The things
you are doing to incease speed will have no effect on speed. Every time you
find a match you add ncgwsuactuals to itself, but it is 0 so you are adding 0
+ 0. At the end you try to add ncgwsuactuals as a named range to cell j1 even
though it is only a variable in your procedure (hence the #name error).

Are you looking for a value in column D and if you find it then you want to
accumulate the values from some other cells??? Finally display that total in
J1. If so why not use a formula in J1 (chain together 4 sumif's and you're
done).
 
S

S Himmelrich

After reviewing the need, I've found the sumproduct code, which is a
simpler solution, but I can quite get the result I'm looking for - can
you help?

I think this would be a simpler solution:

=SUMPRODUCT(--('SOURCE DATA'!D2:D4000="133957")+('SOURCE DATA'!
D2:D4000="146268"),'SOURCE DATA'!G2:G4000)

however I'm not getting my total of column G based on the two values
sepecified in range D2:D4000
 
S

S Himmelrich

thank you for the suggestion, I've done as you mentioned:

=SUMPRODUCT(('SOURCE DATA'!D2:D4000=133957)+('SOURCE DATA'!
D2:D4000=146268),'SOURCE DATA'!G2:G4000)

however the result is zero, there are values > 0 in the G2:G4000 range
to add
 
S

S Himmelrich

on a simpler scale I've event tried:

=SUMIF('SOURCE DATA'!D2:D4000,"=133957",'SOURCE DATA'!G2:G4000)

and don't get a total
 
J

Jim Thomlinson

Are you looking for numbers or text strings??? If you are looking for numbers
then...

=SUMPRODUCT(--('SOURCE DATA'!D2:D4000=133957), 'SOURCE DATA'!G2:G4000)+
SUMPRODUCT(--('SOURCE DATA'!D2:D4000>=1462268), (--('SOURCE
DATA'!D2:D4000<=1462270), 'SOURCE DATA'!G2:G4000)

Don't worry about the or stuff. Just use 2 sumproducts...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top