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

我想从一个数据库改变到另一个。

在数据透视表上下文菜单中似乎没有任何选项可以做到这一点

只需在表格中的任意位置点击即可,然后转到页面顶部的选项卡,然后select选项 – 您将看到一个更改数据源select。

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

右键单击Excel中的数据透视表select向导在查询窗口文件 – 表格定义中单击“返回”单击“获取数据…”

那么你可以创build一个新的或select不同的连接

为了在Excel 2007中从function区中更改数据源…

点击工作表中的数据透视表。 转到function区所在的数据透视表工具,选项选项卡。 select更改数据源button。 将出现一个对话框。

要获得正确的范围并避免错误消息…select现有字段的内容并删除它,然后切换到新的数据源工作表并突出显示数据区域(对话框将保留在所有窗口的顶部)。 一旦你正确地select了新的数据源,它将填写对话框中的空白字段(你之前删除的)。 点击OK。 切换回您的数据透视表,它应该已经更新来自新来源的新数据。

  • 右键点击数据透视表,select数据透视表向导。
  • 点击“返回”button两次。
  • select外部数据源,点击下一步。
  • 点击获取数据
  • 在第一个选项卡中,数据库第一个选项是“新数据源”

这个附加程序将为你做的伎俩。

http://www.contextures.com/xlPivotPlayPlus01.html

它显示连接string,并允许它被改变。 如果需要,也不要忘记更改查询SQL(使用相同的工具)。

对于不涉及从头重新创build数据透视表的任何解决scheme,请保持谨慎。 您的数据透视表字段的选项名称可能与它们在数据库中呈现的值不同步。

例如,在我正在处理涉及人口统计数据的一个工作簿中,如果您尝试select“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 

右键单击Excel中的数据透视表select向导在查询窗口文件 – 表格定义中单击“返回”单击“获取数据…”

那么你可以创build一个新的或select不同的连接

完美的工作。

“获取数据”button位于范围文本input框旁边的红色箭头旁边。

为MS Excel 2000办公版本,点击数据透视表,你会发现一个标签上方的ribon,称为数据透视工具 – 点击,您可以更改数据源从数据选项卡

对于Excel 2007,可以在“选项”菜单/更改数据源中更改数据源