J'ai une table dans une base MySQL comme ceci:données Format mysql dans Excel
+-------+--------+-------------+
| child | parent | data |
+-------+--------+-------------+
| 1 | 0 | house |
| 2 | 0 | car |
| 3 | 1 | door |
| 4 | 2 | door |
| 5 | 2 | windscreen |
| 11 | 5 | wiper |
+-------+--------+-------------+
Je me suis connecté à mysql à partir d'Excel 2007 selon this tutoriel, sauf que j'ai créé les dns dans le système dns pas utilisateur dns, que travaillé pour moi.
J'ai un peu de connaissances sur les formules et je ne pouvais pas comprendre comment obtenir ces données sous forme de tableau:
house | door
house | wall
car | door
car | windscreen | wiper
Modifier 1
La partie MySQL est pas un problème ici. Cette table mysql pourrait très bien être une table excel.
Edit 2
Maintenant, je me rends compte qu'il n'a même pas été nécessaire de dire qu'il ya une table mysql ici juste un tableau Excel. Mais cela peut inspirer/aider quelqu'un.
Edit 3
Après quelques documents i ont réussi à résoudre les aspects les plus importants de mon problème
La gamme en tôle db:
child parent data
1 0 car
2 0 house
3 1 door
4 2 door
5 1 window
6 2 window
7 1 windscreen
8 7 wiper
9 4 color
10 2 color
J'ai un db nom qui fait référence à
=db!$A$2:OFFSET(db!$C$2,COUNTA(db!$C:$C)-2,0)
un nom enfant
=db!$A$2:OFFSET(db!$A$2,COUNTA(db!$A:$A)-2,0)
Dans une autre feuille avec la construction de nom j'ai commencé à partir de B2 et utilisé la formule suivante:
=IFERROR(
IF(ISBLANK(B1),
LARGE(child,COUNTA($A$2:A$2)+1),
VLOOKUP(B1,db,2,0)
),".")
Dans une troisième feuille de sortie du nom que j'ai commencé de A1 et utilisé la formule:
=IFERROR(VLOOKUP(construct!B2,db,3,0),".")
Maintenant, le dernier défi est de rendre les formules de construction et de sortie à dépenser automatiquement lorsque de nouvelles entrées sont ajoutées à la table principale, mais je ne pense pas que ce soit possible.
Modifier 4
Lors de l'importation de sql dans la feuille db il y aura une table au lieu de la plage de sorte que les formules vont chercher un peu différent. Cliquez dans la table, cliquez sur l'onglet de conception et de renommer la base de la table, puis dans la feuille de construction du début b2 avec cette formule:
=IFERROR(
IF(ISBLANK(B1),
LARGE(INDIRECT("base[child]"),COUNTA($A$2:A$2)+1),
VLOOKUP(B1,base,2,0)
),".")
Quelle est la profondeur maximale d'un arbre? Vous ne pouvez pas le faire avec une seule requête si la profondeur est illimitée. – Naktibalda
Quelqu'un avec assez de rep devrait changer le titre et les balises pour refléter que ce poste est en fait une question sur l'affichage d'une table de données comme une hiérarchie ou un arbre. – technomalogical