Skip navigation.
... managing performance ...

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

Thanks!

Thanks J-Walk... unfortunately I'm leaving to catch a flight which is too bad because I'd really like to give this code a run.

Most appreciated!

-- jame healy

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.
More information about formatting options