J'essaie de trouver un moyen d'agréger les données dans un ensemble de données hiérarchique, de préférence dans un tableau croisé dynamique, mais d'autres méthodes pourraient également convenir. Considérons un ensemble de données (grandement simplifié pour l'exemple) qui ressemble à celui ci-dessous. À partir de ces données, j'essaie de créer un ensemble de fonctions qui répondront à des questions telles que:
"Quel est l'inventaire total pour Fruit?"
"Combien de types d'aliments puis-je vendre?"
Item Category
======= ========
Apples Fruit
Bacon Meat
Chicken Meat
Corn Veg
Food
Fruit Food
Grapes Fruit
Meat Food
Squash Veg
Steak Meat
Veg Food
Chaque Article a (parmi beaucoup d'autres informations) un Catégorie , que nous pouvons vraiment considérer comme un "parent". Mais notez également que dans l’ensemble de données, tous les «parents» ont également leurs propres catégories de parents. Dans cet ensemble de données, un échantillon de 'branche' de la hiérarchie serait Aliments & Viande & Poulet.
Pour répondre à la question du type "Combien de sortes de fruits puis-je vendre?", Ce n'est pas difficile, car c'est la catégorie de premier niveau. Je peux simplement utiliser la fonction COUNTIF et dire "Combien d'articles appartiennent à la catégorie" Fruits "?" - et je reçois une table qui ressemble à ceci:
Item Category COUNTIF(categories,me)
Apples Fruit 0
Bacon Meat 0
Chicken Meat 0
Corn Veg 0
Food Food 3
Fruit Food 2
Grapes Fruit 0
Meat Food 3
Squash Veg 0
Steak Meat 0
Veg Food 2
Facile - pour la première ligne, vous voyez seulement combien de fois "Pommes" apparaît dans la catégorie de quelqu'un d'autre. (Puisqu'il est égal à zéro, je sais que les pommes ne sont pas un parent ... cela devrait aider, mais je ne sais pas comment ...) Maintenant, la cinquième ligne, "Fruit", apparaît comme la catégorie de quelqu'un d'autre à deux reprises - depuis le nombre n'est pas nul, je sais que c'est une catégorie plutôt qu'un élément. Tout va bien pour les mathématiques de premier niveau, mais ...
Cela m'amène à la partie que je n'ai pas pu résoudre ... Comment puis-je déterminer le nombre total de types de "nourriture" que j'ai? Et étant donné que mes données réelles comportent beaucoup plus de niveaux de hiérarchie, je dois parcourir l’arbre pour déterminer le nombre total d’enfants dans chacun d’eux. La fonction COUNTIF du premier niveau me dit qu'il existe trois sous-catégories d'aliments (fruits, légumes et viande) - mais ce que je veux vraiment, c'est de le faire déterminer de manière récursive que les fruits, les légumes et la viande pourrait aussi être Catégories, et résumez les nombres correspondants pour ces enfants. En termes excellents, ce que je veux vraiment, c’est pouvoir construire une autre colonne qui compte de manière récursive / itérative le nombre TOTAL d’éléments de cette sous-arborescence ... 2 légumes et 2 fruits.
Quelques facteurs de complication:
Il n'y a pas explicite identifiant dans les données pour nous dire si cet élément particulier est également une catégorie, ou si c'est un niveau inférieur article.
Chaque élément ne connaît que sa catégorie / son parent - il n’existe aucune donnée explicite permettant de savoir s’il a ou non des enfants. En d'autres termes: tous les éléments appartiennent à une catégorie, mais seuls certains éléments sont également des catégories.
Dans les données réelles, la relation parent peut aller jusqu'à 10 niveaux profonds, MAIS il n’ya aucune garantie que la profondeur de chaque la branche dans la hiérarchie est cohérente: certains éléments peuvent avoir 3 niveaux profond tandis que le prochain pourrait être 8.
La racine ou le parent ultime ne vient pas avec une catégorie, mais c'est un cas unique que je peux facilement gérer manuellement.
Je suis tout à fait conscient du fait que ce serait un exercice trivial dans n'importe quel langage de programmation (réel, Perl, Python, etc.) ... essayant très très fort de faire en sorte que cela rentre dans un classeur Excel "standard".
Power Pivot
? Je ne l'ai pas dans 365/2016, mais c'était un complément gratuit inclus dans certaines versions d'Excel et qui permettait de créer des hiérarchies. Je ne sais pas si cela répondra à vos besoins, mais cela pourrait valoir le coup.