あるデータベースから別のデータベースに変更したい。
ピボットテーブルのコンテキストメニューには、これを行うためのオプションはないようです。
excelでピボットテーブルを右クリックし、ウィザードを選択します。[戻る]をクリックし、クエリウィンドウで[データを取得...]をクリックします。ファイル-テーブル定義
次に、新しい接続を作成するか、別の接続を選択できます
テーブルの任意の場所でクリックし、ページ上部のタブに移動して[オプション]を選択すると、[データソースの変更]が表示されます。
これは、Excelのバージョンに大きく依存しているようです。 2007バージョンを使用していますが、テーブルを右クリックしてもウィザードオプションは提供されません。ピボットテーブルをクリックして、画面上部のその他のタブの右側に追加の[ピボットテーブルツール]を表示する必要があります。ここに表示される[オプション]タブをクリックすると、リボンの中央に[データソースの変更]という名前の大きなアイコンが表示されます。
Excel 2007のリボンからデータソースを変更するには...
ワークシートでピボットテーブルをクリックします。 [ピボットテーブルツール]、[オプション]タブのあるリボンに移動します。 [データソースの変更]ボタンを選択します。ダイアログボックスが表示されます。
正しい範囲を取得してエラーメッセージを回避するには、既存のフィールドの内容を選択して削除し、新しいデータソースワークシートに切り替えてデータ領域を強調表示します(ダイアログボックスはすべてのウィンドウの上部に表示されます)。新しいデータソースを正しく選択すると、ダイアログボックスの空のフィールド(前に削除したフィールド)が入力されます。 OKをクリックします。ピボットテーブルに戻ると、新しいソースからの新しいデータで更新されているはずです。
このアドオンはあなたのためのトリックを行います。
http://www.contextures.com/xlPivotPlayPlus01.html
接続文字列を表示し、変更できるようにします。必要に応じて、クエリSQLも変更することを忘れないでください(同じツールを使用)。
最初からピボットテーブルを再作成する必要のないソリューションには少し注意してください。ピボットフィールドのオプション名が、データベースに表示される値と同期しなくなる可能性があります。
たとえば、ある人口統計データを扱っているワークブックで、「20-24」年齢層オプションを選択しようとすると、Excelは実際に25〜29歳の数値を表示します。もちろん、これを実行していることはわかりません。
特にこの問題を解決する問題へのプログラム(VBA)アプローチについては、以下を参照してください。かなり完全/堅牢だと思いますが、PivotTablesはあまり使用しないので、フィードバックに感謝します。
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
mS Excel 2000 Officeバージョンの場合、ピボットテーブルをクリックすると、リボンの上にあるピボットテーブルツールというタブがあります。クリックすると、[データ]タブからデータソースを変更できます
Excel 2007の場合、[オプション]メニューの[データソースの変更]でデータソースを変更できます。
excelでピボットテーブルを右クリックし、ウィザードを選択します。[戻る]をクリックし、クエリウィンドウで[データを取得...]をクリックします。ファイル-テーブル定義
次に、新しい接続を作成するか、別の接続を選択できます
完璧に働きました。
データ取得ボタンは、範囲テキスト入力ボックスの横にある赤い矢印の付いた小さなボタンの横にあります。