Solved

# Subtracting Subtotals from Subtotals

Posted on 2012-03-22
339 Views
I have the following code:

``````'*************************************************************
'*             Format the main Dashboard                     *
'*************************************************************
' (This routine will take 90 seconds)

Dim Bcell As Range

Application.DisplayStatusBar = True
Application.StatusBar = "Please wait while the Dashboard is being formatted... It will take 50 sec"
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False

Range("A3").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array( _
6 , 7 , 8, 9, 14, 15, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, _
40, 41, 42, 43, 44, 48, 49, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64), _
Replace:=True, _
PageBreaks:=False, SummaryBelowData:=True
Range("A1").Select
``````

I would like to subtract

- the subtotals of columns 40 from column 6
- the subtotals of columns 41 from column 7
- the subtotals of columns 42 from column 8
- the subtotals of columns 43 from column 9
And so on...

In other words the subtotals of the second row of code from the subtotals of the first row of code

Thank you
0
Question by:fitaliano
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 42

Expert Comment

ID: 37755409
Can you post some sample workbook data? that your code can be run against and then enhanced?

Dave
0

Author Comment

ID: 37757115
This is an example of what I am trying to do.  Any suggestion to do it in a different way is welcome.
Subtotals.xls
0

LVL 42

Accepted Solution

dlmille earned 500 total points
ID: 37759506
Got it.  Thanks for closing out the older questions, I was wondering about that ;)

Code creates the grouping with subtotals, then a loop to add a SUMIF to each of the subtotals based on the build of the address to that point.  At the bottom, the build is based on the entire list.

``````Option Explicit

Sub doSubTotals()
Dim wkb As Workbook
Dim wks As Worksheet
Dim lastRow As Long
Dim r As Range
Dim rBuild As Range
Dim rng As Range

Set wkb = ThisWorkbook
Set wks = wkb.ActiveSheet

lastRow = wks.Range("B" & wks.Rows.Count).End(xlUp).Row
Set rng = wks.Range("B7:E" & lastRow)

rng.Subtotal groupby:=1, Function:=xlSum, TotalList:=Array(3), _
Replace:=True, PageBreaks:=False, SummaryBelowData:=True

lastRow = wks.Range("B" & wks.Rows.Count).End(xlUp).Row
Set rng = wks.Range("B7:E" & lastRow)

If InStr(r.Value, "Total") <> 0 Then 'found subtotal row
If Not rBuild Is Nothing Then
r.Offset(, 2).Formula = r.Offset(, 2).Formula & "- SUMIF(" & rBuild.Offset(, 3).Address & ",""Y""," & rBuild.Offset(, 2).Address & ")"
Else
Set rBuild = rng.Columns(1)
r.Offset(, 2).Formula = r.Offset(, 2).Formula & "- SUMIF(" & rBuild.Offset(, 3).Address & ",""Y""," & rBuild.Offset(, 2).Address & ")"
End If
Set rBuild = Nothing
ElseIf rBuild Is Nothing Then
Set rBuild = r
Else
Set rBuild = Union(rBuild, r)
End If
Next r
End Sub
``````

See attached.

Dave
Subtotals-r1.xls
0

Author Closing Comment

ID: 37777417
Thank you Dave,

It worked great!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

A little background as to how I came to I design this code: Around 5 years ago I designed an add-in that formatted Excel files to a corporate standard, applying different cell colours and font type depending on whether the cells contained inputs,…
Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…
###### Suggested Courses
Course of the Month8 days, 15 hours left to enroll