Mobile: +1.778.891.5263
Address:
Suite 300, 1055 W. Hastings
Vancouver, BC, Canada
V6E 2E9
No Multiple Consolidation Ranges in Excel 2007? ...
UPDATE: Because Excel 2007 has backwards compatibility of menu shortcuts, you can access the original "Pivot Table Wizard" using "ALT, D, P". This original wizard still supports Multiple Consolidation Ranges.
This tip that I had found a few months ago was very helpful, and I found it quite useful (as have others) to take table summaries that were output from various sources (Microsoft Project Server as an example) and turn it into a (more) normalized data table.
Now that I've upgraded to Excel 2007 (which I think is generally a lot better than its predecessor), I don't think I can achieve the same result. As a matter of fact I can't find the "Multiple Consolidation Ranges" option when creating a Pivot Table. It is detailed here in a Microsoft KB post from November 2003, but for Excel 2000 specifically. Is this moved somewhere else? Is there a workaround?
I also tried implementing the VBA code that the article suggests, but I think the object model must have changed as it throws a run-time exception (see right).
I think that trying to normalize a summary table is likely a fairly common use case... anyone have any experience with this?
Other code
In XL 2007, you can add the old PivotTable and Chart Report Wizard to your Quick Access Toolbar. In the Customize tab, look in the "not available in the ribbon" section.
Better yet, use this code. It's a much more direct way of accomplishing the same thing (the line breaks are probably messed up).
-John
Sub MakeTable()
Dim OutputRng As Range
Dim InputRng As Range
Dim out_row As Long, out_col As Long
Dim in_col As Long, in_row As Long
Set InputRng = ActiveCell.CurrentRegion
Set OutputRng = Application.InputBox(prompt:="Click the upper left cell for the output", Type:=8)
OutputRng.Range("A1:C1") = Array("Col1", "Col2", "Col3")
out_row = 2
out_col = 2
For in_row = 2 To (InputRng.Rows.Count - 1) * (InputRng.Columns.Count - 1) + 1
For in_col = 1 To 3
If in_col = 1 Then OutputRng.Cells(in_row, in_col) = InputRng.Cells(out_row, 1)
If in_col = 2 Then OutputRng.Cells(in_row, in_col) = InputRng.Cells(1, out_col)
If in_col = 3 Then OutputRng.Cells(in_row, in_col) = InputRng.Cells(out_row, out_col)
Next in_col
out_col = out_col + 1
If out_col = InputRng.Columns.Count + 1 Then
out_col = 2
out_row = out_row + 1
End If
Next in_row
End Sub
Recent comments
1 week 21 hours ago
1 week 2 days ago
1 week 2 days ago
3 weeks 3 days ago
3 weeks 5 days ago
15 weeks 6 days ago
16 weeks 4 days ago
16 weeks 6 days ago
17 weeks 1 day ago
17 weeks 3 days ago