We help IT Professionals succeed at work.

How do I use a SUMIF function when the cells to add together are not adjacent to each other?

203 Views
Last Modified: 2017-05-08
I want to use this formula:

=IFERROR(SUMIF(Q12:Q18;Q24:Q30;Q37;(AND(P32="*volt*");P37="*volt*");(SUM(Q12:Q18;Q24:Q30);"")))

But I think I need to change the range after SUMIF. What I want is that sum everything in Q12:18 and Q24:Q30 and Q37 if both P32 and P37 contains the text "volt" (must be in both P32 and P37). Otherwise sum only Q12:Q18 and Q24:Q30.

If I need to change my formula, how should I change it?
Comment
Watch Question

ShumsManaging Director/Excel VBA Developer
CERTIFIED EXPERT
Distinguished Expert 2018

Commented:
Hi,
SumIF is used only when you have cell range filled with "volt" and you want the total of "volt" from other column/columns. In your case, IF AND SUM would be helpful.
Try below:

=IF(AND(P32="volt",P37="volt"),(SUM(Q12:Q18)+SUM(Q24:Q30)+Q37),SUM(Q12:Q18)+SUM(Q24:Q30))
CERTIFIED EXPERT
Top Expert 2016

Commented:
Hi,

pls try
=IF(AND(P32="volt",P37="volt",Q37)+SUM(Q12:Q18,Q24:Q30)

Open in new window

Regards
Hamed NasrRetired IT Professional
CERTIFIED EXPERT

Commented:
Try:
=IF(AND(P32="volt",P37="volt"),SUM(Q12:Q18;Q24:Q30;Q37),SUM(Q12:Q18;Q24:Q30))

Author

Commented:
I tried your formulas now, but I get a blank cell for both. By the way, I need "*volt*" (not exactly "volt" but "*volt*" and can/will contain other words also.
ShumsManaging Director/Excel VBA Developer
CERTIFIED EXPERT
Distinguished Expert 2018

Commented:
Then try below formula:
=IF(AND(COUNTIF(P32,"*"&"volt"&"*"),COUNTIF(P37,"*"&"volt"&"*")),SUM(Q12:Q18:Q24:Q30:Q37),SUM(Q12:Q18:Q24:Q30))
byundtMechanical Engineer
CERTIFIED EXPERT
Most Valuable Expert 2013
Top Expert 2013
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
Retired IT Professional
CERTIFIED EXPERT
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
CERTIFIED EXPERT
Top Expert 2016

Commented:
then try
=IF(COUNTIF(P32,"*volt*")*COUNTIF(P37,"*volt*"),Q37)+SUM(Q12:Q18,Q24:Q30)

Open in new window

Author

Commented:
Shums, I tried your formula now but get a circular reference warning.

Byundt, then I tried your formula, and it works! Only when both P32 and P37 contains "volt" then it includes Q37 in the calculation.
But something strange happens: In a drop-down I have in M4 ("volt" and "auto"), when I change selection here from "volt" to "auto", then the formula in Q35 gets deleted and replaced with the calculated static value.

hnasr, your formula also works fine! But the same strange thing happens as I noted for Byundt.

Rgonzo1971, I could not get your formula to work; nothing happens when both P32 and P37 contains "volt" and I select a value in Q37.

So both Byundt's and hnasr's formulas works fine. The problem remains why the formula gets replaced by the value when changing from "volt" to "auto" in the drop-down in M4.
byundtMechanical Engineer
CERTIFIED EXPERT
Most Valuable Expert 2013
Top Expert 2013

Commented:
If the formula is getting changed, then you probably have a VBA event macro running. Are you able to post the workbook?

Author

Commented:
I have this sub in the middle of a lot of other subs:

End Sub

Private Sub Worksheet_Calculate()
    Dim i As Integer
    On Error GoTo ErrorOut
    Application.EnableEvents = False
    For i = 1 To 8
        If KeepValue(i) <> Cells(34, i + 16) And Cells(35, i + 16).HasFormula = True Then
            Cells(35, i + 16) = Cells(34, i + 16)
        End If
        KeepValue(i) = Cells(34, i + 16)
    Next i
ErrorOut:
    Application.EnableEvents = True
End Sub

But the sub doesn't work as intended: instead of keeping the formula in Q35:Y35 it keeps the value.
byundtMechanical Engineer
CERTIFIED EXPERT
Most Valuable Expert 2013
Top Expert 2013

Commented:
The following statement is overwriting your formula in row 35:
          Cells(35, i + 16) = Cells(34, i + 16)

Open in new window

If you want to keep the formula in row 35, and copy the value from it into row 34, you might use:
          Cells(34, i + 16).Value = Cells(35, i + 16).Value

Open in new window

If rows 34 and 35 have formulas and you want to keep them both, then you would just delete the statement altogether.

Author

Commented:
Both row 35 and 34 have separate formulas different from each other that should be kept, but the idea with this VBA is that on row 35, I might choose to manually enter a value instead of the formula calculated value, and in case I thereafter choose to revert to the formula calculated value and hit Delete, then the old formula should be restored to this cell. This worked fine with this VBA earlier, but not now.
byundtMechanical Engineer
CERTIFIED EXPERT
Most Valuable Expert 2013
Top Expert 2013

Commented:
Both row 35 and 34 have separate formulas different from each other that should be kept,
If you can't copy a formula from one row (or column) to another, those formulas need to be hard-coded in the VBA.

Author

Commented:
I can copy a formula from one row to another, but the problem is that when I select another option in that drop-down menu in cell M4, then the formula on row 35 gets replaced by the resulting value only.
byundtMechanical Engineer
CERTIFIED EXPERT
Most Valuable Expert 2013
Top Expert 2013
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
Hamed NasrRetired IT Professional
CERTIFIED EXPERT

Commented:
then the formula on row 35 gets replaced by the resulting value only
Please demonstrate the issue by uploading a working spreadsheet.

Author

Commented:
Thanks byndt, that worked, the formula stays in place now. Only that I can not delete it like before and it stays in place, but that is another posting I need to do later.