Moving Subtotals

David was adding subtotals (Data tab of the ribbon, in the Outline group) to large worksheets and looking for a way to move the subtotal cells to different cells. For instance, assume that when Excel added the automatic subtotals, they were added in column S, and the SUBTOTAL formula added by Excel referred to ranges of cells in column S. David wanted to move the SUBTOTAL formulas (and only those formulas) out of column S to column T, and have the formulas still refer to detail in column S.

One option is to go through and move the SUBTOTAL formulas, one at a time, to the desired locations. (You would use Ctrl+X and Ctrl+V to move the cells, rather than Ctrl+C and Ctrl+V to merely create copies of the cells.) If the worksheets are large, with many subtotals, this can become very tedious very quickly.

Tedium in Excel is often the primary impetus for creating a macro. This case is no exception. It is possible to create a macro that will do the actual move of the SUBTOTAL formulas. Consider the following example:

Sub MoveSubtotals()
    Dim rCell As Range
    Dim rng As Range
    Dim iCol As Integer
    Dim iOffset As Integer

    iCol = 19  '19 is Column S
    iOffset = 1 'Positives go right, negatives go left
    Set rng = Intersect(Selection.CurrentRegion, Columns(iCol))
    For Each rCell In rng
        If InStr(rCell.Formula, "SUBTOTAL") Then
            rCell.Offset(0, iOffset).Formula = _
        End If
End Sub

This example works by examining each cell selected in column S. If the formula in the cell contains the word SUBTOTAL, then the formula is copied one column to the right, in column T, and deleted from the cell in column S. You can change the distance left or right that the subtotals are moved by simply changing the value assigned to the iOffset variable.