web-dev-qa-db-ja.com

別のピボットテーブルのデータソースとしてExcelピボットテーブルを使用する

生のテーブルをデータソースとして使用しているExcelのピボットテーブルがあります。このピボットテーブルは、行のグループ化と合計を行っています。

この新しいピボットテーブルの結果を、このピボットテーブルのデータソースとして使用して、このデータをさらに変更します。

これはExcelで可能ですか?あなたはそれを「ネストされたピボットテーブル」と呼ぶことができると思います

12
Jonathan

新しいシート(新しいピボットテーブルを作成する場所)で、キーの組み合わせ(Alt + D + P)を押します。データソースオプションのリストで、「Microsoft Excelデータベースのリスト」を選択します。 [次へ]をクリックし、ソースとして使用するピボットテーブルを選択します(フィールドの実際のヘッダーから選択します)。この範囲はかなり静的であり、ソースピボットを更新してサイズが変更された場合、範囲もサイズ変更する必要があります。お役に立てれば。

11
user3357094
  • 最初のピボットテーブルを作成します。

  • 左上の最初のセルを選択します。

  • オフセットを使用して範囲名を作成します。

    OFFSET(Sheet1!$A$3,0,0,COUNTA(Sheet1!$A:$A)-1,COUNTA(Sheet1!$3:$3))

  • F3を使用して、データのソースとして範囲名で2番目のピボットを作成します。

最初のピボットから行または列の数を変更すると、ピボットを更新した後、2番目のピボットが更新されます

GFGDT

5
GFGDT

最終的な目標は、元のピボットテーブル内に個別の(一意の)値を表示することだと思います。

たとえば、OrderNumber、OrderDate、OrderItem、orderQtyでデータセットを設定できます

最初のピボットテーブルには、OrderDateとOrderQtyの合計が表示されますおそらく、同じピボット内の一意の注文の数を確認する必要があります。標準のピボットテーブル内でこれを行うことはできません

それを行うには、Office 2016が必要になります(または、ピボットPivotが機能する場合もあります)。 Office 2016で、データ>挿入>ピボットテーブル> 「このデータをデータモデルに追加する」を選択を選択します

その後、グループ化方法をDistinct(Count)として選択できます。

0
Fv I

個人的には、これを少し異なる方法で回避しました-SQLサーバーソースをクエリするピボットテーブルがあり、タイムラインスライサーを使用して結果を日付範囲に制限していました-その後、ピボット結果を別のテーブルにまとめたいと思いました。

「ソース」ピボットテーブルを選択し、「SourcePivotData」という名前の範囲を作成しました。

名前付き範囲をソースとして使用して、サマリーピボットテーブルを作成します。

ソースピボットテーブルのワークシートイベントに、次のコードを挿入します。

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

'Update the address of the named range
ThisWorkbook.Names("SourcePivotData").RefersTo = "='" & Target.TableRange1.Worksheet.Name & "'!" & Target.TableRange1.AddressLocal

'Refresh any pivot tables that use this as a source
Dim pt As PivotTable
Application.DisplayAlerts = False
For Each pt In Sheet2.PivotTables
    pt.PivotCache.Refresh
Next pt
Application.DisplayAlerts = True

End Sub

私にとってはうまくいきます! :)

0
user1641172

提案どおり、ピボットテーブルの内容を変更し、値として貼り付けることができます。しかし、値を動的に変更する場合、私が見つけた最も簡単な方法はGo To Insert->create pivot table入力データフィールドのダイアログボックスで、以前のピボットテーブルのセルを選択します。

0
Eswar Chitirala

それを行う前に、まずピボットを値に変換する必要があります。

  • 小計を削除する
  • 行アイテムを繰り返します
  • 値のコピー/貼り付け
  • 新しいピボットテーブルを挿入する
0
nutsch

これは私が前にこれをやった方法です。

  1. ソースピボットテーブルの右側にダミー列「X」を配置します。
  2. そのセルをクリックして、ピボットテーブルを開始します。
  3. ダイアログボックスが表示されたら、データ範囲を編集してピボットテーブルを含めることができます。
  4. これには、最初にソーステーブルを更新してから、セカンダリピボットテーブルを更新する必要がある場合があります...または、すべて2回更新する必要があります
0
BenjaminB

@nutschが示すように、Excelは必要なことを直接実行しないため、最初にピボットテーブルから他の場所にデータをコピーする必要があります。ただし、値をコピーして貼り付けるのではなく、多くの目的に適した方法は、単純な式を使用して値をコピーする非表示列または非表示シート全体を作成することです。元のピボットテーブルが更新される場合、コピーと貼り付けのアプローチはあまり役に立ちません。

たとえば、Sheet1に元のピボットテーブルが含まれている場合、次のようになります。

  • Sheet2を作成し、_=Sheet1!A1_をSheet2!A1に入れます
  • 元のピボットテーブルのサイズに合わせて、必要なだけSheet2のセルの周りにその数式をコピーします。
  • 元のピボットテーブルが更新されるたびにサイズが変更される可能性があると仮定すると、Sheet2の数式をコピーして、元のピボットテーブルが占める可能性のある領域全体をカバーできます。これにより、元のセルが現在空であるセルに多くのゼロが配置されますが、代わりに式=IF(Sheet1!A1="","",Sheet1!A1)を使用することでそれを回避できます。
  • Sheet2内の範囲に基づいて新しいピボットテーブルを作成し、Sheet2を非表示にします。
0
MattClarke