2016-04-21 16 views
3

Ich erstelle ein Budget in Excel und daher habe ich einige Kategorien und Unterkategorien. Unterkategorien beziehen sich auf 1 Zelle im Vergleich zu ihrer jeweiligen übergeordneten Kategorie. Unterkategorien können natürlich Unterkategorien haben.Erste verwendete Zelle über Adresse

In der Spalte neben meinem "Kategoriebaum" möchte ich den "Kategoriepfad" drucken.

Lassen Sie uns sagen, dass ich den folgenden Baum von Kategorien haben: Category tree

Ich möchte jetzt die „Kategorie-Pfad“ next wie diese es gedruckt werden: enter image description here

Ich dachte, ich die Kategorie komponieren könnte Pfad mit dem Kategoriepfad der übergeordneten Kategorie (falls vorhanden) und dem Kategorienamen in der aktuellen Zeile. Da Unterkategorien eigene Unterkategorien haben können, weiß ich nicht, in welcher Spalte der Kategoriename in der aktuellen Zeile gespeichert ist. Um mir die Kategorienamen für die aktuelle Zeile bin mit der folgenden Formel (gefunden auf this site (German)):

{=INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0))} 

ich weiß, gibt es keine Kategorie mehr als fünf Ebene tief, deshalb kann ich savely „hard-Code“ z.B. Der Bereich A7: F7 für Zeile 7 und erhalten "Side Job" als Ergebnis der oben genannten Formel.

Jetzt kommt der knifflige Teil (zumindest für mich) und der Grund, warum ich diese Frage stelle: Ich muss die Zeile der Elternkategorie bekommen, damit ich dann den Kategoriepfad der Eltern verwenden kann, um den Kategoriepfad zu verfassen der Unterkategorie. In diesem Fall wäre es

{=H4&" > "&INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0))} 

Ich weiß nicht, wie dynamisch die Adresse der Kategorie Pfad der Eltern zu berechnen. Von another German site habe ich eine Formel bekam, die in die richtige Richtung geht und würde die Reihe der übergeordneten Kategorie „Wage & Gehalt“ zurück:

{=MAX((A1:A7<>"")*ROW(A1:A7))} 

Aber nur, wenn die Matrix in der Formel konstant ist. Es funktioniert nicht mit einer dynamisch berechneten Matrix. Die dynamische Matrix sollte von A1 bis A7 im Fall von „Nebenjob“ reicht als A ist die Spalte auf die Kategorienamen links, ist die erste Zeile (und die Zeile Ich mag bis suchen zu) und ist die aktuelle Zeile. Der dynamische Teil dieser Matrix ist A und .

Um die Matrix (das DYNAMIC_MATRIX) zu komponieren Ich bin mit dieser Formel:

{=INDIRECT(ADDRESS(1;CATEGORY_COLUMN-1)&":"&ADDRESS(ROW();CATEGORY_COLUMN-1))} 

wo CATEGORY_COLUMN ist meine erste Formel gewickelt in COLUMN():

{=COLUMN(INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0)))} 

Leider ist die MAX(... Formel gibt einen Fehler zurück, wenn es mit dem DYNAMIC_MATRIX:

verwendet wird

den Fehler zu umgehen, ich DYNAMIC_MATRIX<>"" mit NOT(ISBLANK(DYNAMIC_MATRIX)) ersetzt:

{=MAX(NOT(ISBLANK(DYNAMIC_MATRIX))*ROW(DYNAMIC_MATRIX))} 

Nun, das ist, wie die Formel aussieht, ohne dass die Platzhalter:

{=MAX(NOT(ISBLANK(INDIRECT(ADDRESS(1;COLUMN(INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0)))-1)&":"&ADDRESS(ROW();COLUMN(INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0)))-1))))*ROW(INDIRECT(ADDRESS(1;COLUMN(INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0)))-1)&":"&ADDRESS(ROW();COLUMN(INDEX(A7:F7;MATCH(TRUE;A7:F7<>"";0)))-1))))} 

Meine Formel ist die aktuelle Zeile statt der Rückkehr die Zeile der übergeordneten Kategorie (d. h für "Nebenjob" gibt es statt zurück.

Ich weiß nicht, warum :(

Kurz, sollte die gesamte Formel wie folgt vor:.
Wenn es sich um eine Unterkategorie auf der aktuellen Zeile ist, drucken parent category's path > subcategory name Der Weg der Hauptkategorie Income > category name wenn die Eltern sein sollte Kategorie ist in der Spalte A gespeichert (und hat daher keine übergeordnete Kategorie auf ihrem eigenen (mit Ausnahme des „Einkommen“ Gruppenüberschrift)).

Es ist für mich völlig ausreichend ist, wenn jemand, der will meine Fragen nur auf das konzentriert beantworten "Erhalte den Pfad der Elternkategorie" :)

Danke,
Marcel

+0

Beste. Frage. Je. Ich wünschte, ich könnte dich 100 Mal aufrüsten. Willst du das nur mit Formeln machen? – findwindow

+0

Vielen Dank für das Kompliment :) Eigentlich möchte ich eine Javascript-Anwendung für meine Finanzen kodieren. Da ich erst einmal die aktuellen Frameworks lesen muss, möchte ich Excel als temporäre Lösung verwenden. Mit dem Kategoriepfad möchte ich die verschiedenen Transaktionen einer Kategorie auf einem separaten Blatt zusammenfassen können. – marcelbrueckner

+0

Ok. Ich bin schlecht in Formeln, aber ich kann dies über VBA tun.Also, willst du nur Formeln oder ist VBA in Ordnung? – findwindow

Antwort

4

Hier ist eine Antwort, die die 5 Ebenen bat um die Frage gehen wird.

Basierend auf einer Formel Here.

=LOOKUP(2,1/($A$2:A2<>""),$A$2:A2) & 
IF(COUNTA($B2:$D2)>0,">" & LOOKUP(2,1/($B$2:B2<>""),$B$2:B2) & 
IF(COUNTA($C2:$D2)>0,">" & LOOKUP(2,1/($C$2:C2<>""),$C$2:C2) & 
IF(COUNTA($D2:$D2)>0,">" & LOOKUP(2,1/($D$2:D2<>""),$D$2:D2) & 
IF(COUNTA($E2:$E2)>0,">" & LOOKUP(2,1/($F$2:F2<>""),$F$2:F2),""),""),""),"") 

Hinweis habe ich Einkommen in seiner eigenen Spalte, sobald Sie Ausnahmen zu machen, wenn Sie Einzug in und, wenn Sie für die Datenverwaltung nicht seine Schwierigkeiten zu tun (und das Datenspeicherformat ist bereits nicht gut).

enter image description here

Eine bessere Struktur Meiner Meinung nach ist gefüllt unten Alle catagories haben (mehr wie eine Datenbank), und dann, wenn Sie möchten, dass Sie Pivot-Tabellen und so können die Daten einfacher zu analysieren.

+0

Vielen Dank. Das hat den Trick für mich gemacht. Außerdem ist es viel einfacher als mein Ansatz und daher leichter zu verstehen und zu einem späteren Zeitpunkt ggf. zu erweitern. Gut gemacht :) – marcelbrueckner

Verwandte Themen