BTW, you can change SetupHeadings to stop the row groups stacking up
Private Function SetupHeadings(ByVal loc As Long) As Boolean
Dim i As Long
With Worksheets("Table")
With .Cells(loc, "A")
.Range("A1:P1").Value = Array(vbNullString, vbNullString, vbNullString, vbNullString, vbNullString, vbNullString, "MTD", "MTD -1", "WEEK 0", "WEEK -1", "WEEK -2", "WEEK -3", "WEEK -4", "WEEK -5", "WEEK -6", "WEEK -7")
.Range("G1:H1").Interior.Color = RGB(48, 84, 150)
.Range("I1:P1").Interior.Color = RGB(198, 89, 17)
.Range("A1:P1").Font.Color = vbWhite
.Range("A2:F2").Value = Array("OWNER", "CATEGORY", "SUBCATEGORY", "X", "CLASSIFICATION", "TARGET")
.Range("A2:H2").Interior.Color = RGB(142, 169, 219)
.Range("I2:P2").Interior.Color = RGB(244, 176, 132)
.Range("G2").FormulaR1C1 = "=MAX(IF(Monthly!C[7]=Table!R[-7]C,Monthly!C[3]))"
.Range("H2").FormulaR1C1 = "=EOMONTH(RC[-1],-1)"
.Range("I2").FormulaR1C1 = "=MAX(IF(Weekly!C[5]=Table!R[-7]C[-2],Weekly!C[1]))"
.Range("G2:P2").NumberFormat = "dd-mmm"
.Range("J2:P2").FormulaR1C1 = "=RC[-1]-7"
.Range("A1:P2").HorizontalAlignment = xlCenter
.Range("A1:P2").Font.Bold = True
End With
If .Rows(loc + 3).OutlineLevel > 1 Then
Do While .Rows(loc + 3).OutlineLevel > 1
.Cells.Rows.Ungroup
Loop
End If
End With
End Function