如何在Excel中更改数据透视表的数据源?

24

我希望将它从一个数据库更改为另一个数据库。

似乎在数据透视表上下文菜单中没有任何选项可以执行此操作。


3
这怎么是离题的?!我是一名商业智能开发者,似乎有很多其他人也在寻找同样的答案。 - adolf garlic
10个回答

21

刚刚找到了方法-在表格的任何位置单击,然后转到页面顶部的选项卡并选择“选项”-从那里您将看到“更改数据源”选项。


6

看起来这很大程度上取决于你使用的Excel版本。我正在使用2007版本,当你右键单击表格时没有向导选项。你需要点击数据透视表才能在屏幕顶部的其他选项卡右侧出现额外的“数据透视表工具”。点击这里出现的“选项”选项卡,然后在功能区中央有一个名为“更改数据源”的大图标。


3

在Excel中,右键单击数据透视表

选择“向导”

点击“后退”

点击“获取数据...”

在查询窗口中

文件 - 表定义

然后您可以创建一个新的连接或选择不同的连接。


Excel 2007 中没有这个菜单选项。 - Sam

3
为了在Excel 2007中通过选项卡更改数据源...请单击工作表中的数据透视表。进入选项卡PivotTable Tools,选择选项栏。选择“更改数据源”按钮。将出现一个对话框。
为了获取正确的范围并避免错误信息...请选择现有字段的内容并将其删除,然后切换到新数据源工作表并突出显示数据区域(对话框将始终置于所有窗口之上)。一旦正确选择了新的数据源,它将填充对话框中的空白字段(您之前删除的字段)。点击确定。切换回您的数据透视表,它应该已经使用来自新源的新数据进行更新。

2
请注意,任何不涉及重新创建数据透视表的解决方案都需要谨慎对待。你的透视字段选项名称可能会与它们展示给数据库的值不同步。例如,在涉及人口统计数据的一个工作簿中,如果你尝试选择“20-24”岁的选项,Excel实际上会向你呈现25-29岁的数据,当然不会告诉你这一点。请参阅以下程序化(VBA)方法来解决此问题及其他问题。我认为它相当完整/健壮,但我不常使用数据透视表,所以需要反馈。
Sub SwapSources()

strOldSource = "2010 Data"
strNewSource = "2009 Data"

Dim tmpArrOut

For Each wsh In ThisWorkbook.Worksheets
    For Each pvt In wsh.PivotTables
        tmpArrIn = pvt.SourceData
        ' row 1 of SourceData is the connection string.
        ' rows 2+ are the SQL code broken down into 255-byte chunks.
        ' we need to concatenate rows 2+, replace, and then split them up again

        strSource1 = tmpArrIn(LBound(tmpArrIn))
        strSource2 = ""
        For ii = LBound(tmpArrIn) + 1 To UBound(tmpArrIn)
            strSource2 = strSource2 & tmpArrIn(ii)
        Next ii

        strSource1 = Replace(strSource1, strOldSource, strNewSource)
        strSource2 = Replace(strSource2, strOldSource, strNewSource)

        ReDim tmpArrOut(1 To Int(Len(strSource2) / 255) + 2)
        tmpArrOut(LBound(tmpArrOut)) = strSource1
        For ii = LBound(tmpArrOut) + 1 To UBound(tmpArrOut)
            tmpArrOut(ii) = Mid(strSource2, 255 * (ii - 2) + 1, 255)
        Next ii

        ' if the replacement SQL is invalid, the PivotTable object will throw an error
        Err.Clear
        On Error Resume Next
            pvt.SourceData = tmpArrOut
        On Error GoTo 0
        If Err.Number <> 0 Then
            MsgBox "Problems changing SQL for table " & wsh.Name & "!" & pvt.Name
            pvt.SourceData = tmpArrIn ' revert
        ElseIf pvt.RefreshTable <> True Then
            MsgBox "Problems refreshing table " & wsh.Name & "!" & pvt.Name
        Else
            ' table is now refreshed
            ' need to ensure that the "display name" for each pivot option matches
            ' the actual value that will be fed to the database.  It is possible for
            ' these to get out of sync.
            For Each pvf In pvt.PivotFields
                'pvf.Name = pvf.SourceName
                If Not IsError(pvf.SourceName) Then ' a broken field may have no SourceName
                    mismatches = 0
                    For Each pvi In pvf.PivotItems
                        If pvi.Name <> pvi.SourceName Then
                            mismatches = mismatches + 1
                            pvi.Name = "_mismatch" & CStr(mismatches)
                        End If
                    Next pvi
                    If mismatches > 0 Then
                        For Each pvi In pvf.PivotItems
                            If pvi.Name <> pvi.SourceName Then
                                pvi.Name = pvi.SourceName
                            End If
                        Next
                    End If
                End If
            Next pvf
        End If
    Next pvt
Next wsh

End Sub

2
这个插件可以帮你解决问题。 http://www.contextures.com/xlPivotPlayPlus01.html 网站提供了该插件下载,它能显示连接字符串并允许进行更改。如果需要的话(使用同一工具),不要忘记也更改查询SQL。

2
  • 右键点击数据透视表,选择“数据透视表向导”。
  • 点击“后退”按钮两次。
  • 选择“外部数据源”,点击下一步。
  • 点击“获取数据”。
  • 在第一个选项卡“数据库”中,第一个选项是“新数据源”。

这个不起作用。向导的“选择外部数据源”页面上没有 “获取数据” 按钮。如果在下一页上点击“获取数据”,则没有立即明显的编辑连接的方法。 - adolf garlic

1
在Excel中,右键单击数据透视表,选择向导,点击“后退”,在查询窗口中点击“获取数据...”-文件-表定义。然后您可以创建一个新的连接或选择不同的连接。
操作完美无误。
获取数据按钮位于范围文本输入框旁边的带有红色箭头的小按钮旁边。

1

对于 MS Excel 2000 办公版本, 点击数据透视表 您会发现在选项卡上方有一个名为“数据透视表工具”的选项卡 - 点击它 您可以从“数据”选项卡更改数据源


1

如果是Excel 2007,您可以在选项菜单/更改数据源中更改数据源。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接