web-dev-qa-db-fra.com

Utiliser le tableau croisé dynamique Excel comme source de données pour un autre tableau croisé dynamique

J'ai un tableau croisé dynamique dans Excel qui utilise un tableau brut comme source de données. Ce tableau croisé dynamique regroupe et résume des lignes. 

J'aimerais maintenant utiliser le résultat de ce nouveau tableau croisé dynamique en tant que source de données pour un nouveau tableau croisé dynamique qui modifiera davantage ces données. 

Est-ce possible avec Excel? Je suppose que vous pourriez l'appeler 'tableaux croisés dynamiques imbriqués'

9
Jonathan

Dans une nouvelle feuille (où vous souhaitez créer un nouveau tableau croisé dynamique), appuyez sur la combinaison de touches (Alt + D + P). Dans la liste des options de source de données, sélectionnez "Liste de bases de données Microsoft Excel". Cliquez sur Suivant et sélectionnez le tableau croisé dynamique que vous souhaitez utiliser en tant que source (sélectionnez en commençant par les en-têtes des champs). Je suppose que cette plage est plutôt statique et si vous actualisez le pivot source et que sa taille change, vous devrez également redimensionner la plage. J'espère que cela t'aides.

10
user3357094

Je suppose que votre objectif final est d'afficher des valeurs distinctes (uniques) dans votre tableau croisé dynamique d'origine.

Par exemple, vous pouvez avoir un ensemble de données avec OrderNumber, OrderDate, OrderItem, orderQty.

Le premier tableau croisé dynamique vous indiquera la date et la somme de OrderQty et vous souhaiterez probablement voir le nombre de commandes uniques dans le même pivot . Vous ne pourrez pas le faire dans le tableau croisé standard. 

Si vous souhaitez le faire, vous aurez besoin d'Office 2016 (ou peut-être que pover Pivot pourrait fonctionner). Dans office 2016, sélectionnez vos données> Insertion> Tableau croisé dynamique> cochez la case "Ajouter ces données au modèle de données"

Ensuite, vous pourrez sélectionner une méthode de regroupement en tant que Distinct (Count)

0
Fv I

Personnellement, j’ai abordé cette question d’une manière légèrement différente: j’avais un tableau croisé dynamique interrogeant une source de serveur SQL et j’utilisais le découpeur de la timeline pour limiter les résultats à une plage de dates. Je souhaitais ensuite résumer les résultats du pivot dans un autre tableau.

J'ai sélectionné le tableau croisé dynamique «source» et créé une plage nommée appelée «SourcePivotData».

Créez vos tableaux croisés dynamiques croisés en utilisant la plage nommée comme source.

Dans les événements de la feuille de calcul pour le tableau croisé dynamique source, j'ai mis le code suivant:

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

Fonctionne bien pour moi! :)

0
user1641172

Vous devez d'abord convertir le pivot en valeurs avant de pouvoir le faire:

  • Supprimer les sous-totaux
  • Répéter les éléments de la ligne
  • Copier/coller des valeurs
  • Insérer un nouveau tableau croisé dynamique
0
nutsch

voici comment j'ai fait cela avant.

  1. placez une colonne fictive "X" à droite du tableau croisé dynamique source.
  2. cliquez dans cette cellule et démarrez votre tableau croisé dynamique. 
  3. une fois la boîte de dialogue ouverte, vous pouvez modifier la plage de données pour inclure votre tableau croisé dynamique.
  4. vous devrez peut-être d'abord actualiser la table source, puis votre tableau croisé dynamique secondaire ... ou l'actualiser deux fois
0
BenjaminB

Comme @nutsch l'indique, Excel ne fera pas directement ce dont vous avez besoin. Vous devez donc d'abord copier vos données du tableau croisé dynamique. Plutôt que d’utiliser des valeurs telles que copier puis coller, il est préférable de créer des colonnes masquées ou une feuille masquée entière qui copie les valeurs à l’aide de simples formules. L'approche copier-coller n'est pas très utile lorsque le tableau croisé dynamique d'origine est actualisé.

Par exemple, si Sheet1 contient le tableau croisé dynamique d'origine, alors:

  • Créer une feuille Sheet2 et mettre =Sheet1!A1 dans une feuille Sheet2! A1
  • Copiez cette formule sur autant de cellules de la feuille que nécessaire pour correspondre à la taille du tableau croisé dynamique d'origine.
  • En supposant que le tableau croisé dynamique d'origine puisse changer de taille à chaque actualisation, vous pouvez copier la formule dans la feuille Sheet2 afin de couvrir la totalité de la surface potentielle du tableau croisé dynamique d'origine. Cela mettra beaucoup de zéros dans les cellules où les cellules d'origine sont actuellement vides, mais vous pouvez éviter cela en utilisant la formule =IF(Sheet1!A1="","",Sheet1!A1) à la place.
  • Créez votre nouveau tableau croisé dynamique basé sur une plage dans la feuille Sheet2, puis masquez la feuille Sheet2.
0
MattClarke