Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel Dateien / Tabellen aus verketter Zelle verknüpfen





Frage

Hallo, ich habe im Excel sheet source der Datei Test1.xls durch verketten den Namen der Datei (Test02) erzeugt, aus dem ich aus dem sheet Tabelle1 Daten auslesen möchte. Diese sollen in der Datei Test1.xls im sheet jan05 dargestellt werden. Um die Daten direkt im sheet jan05 anzuzeigen benutze ich den Befehl: =´[Test02.xls]Tabelle1´!$C$16. Das klappt. Da die Datei Test02 nun monatlich neu erscheint und sehr viele Daten enthält möchte ich im sheet source nur den Dateinamen ändern, und in allen sheets stehen dann automatisch alle Werte der Test02. Frage: Wie lautet der Befehl, der in sheet jan05 stehen muss, um den Dateinamen aus dem sheet source der gleichen Datei den Dateinamen der Zieldatei Test02 auszulesen und dahinter das gesuchte sheet Tabelle1 anzuzeigen? Hoffentlich war das nicht zu verwirrend. Vielen Dank für eure Hilfe Alexander

Antwort 1 von Aliba

Hi Alexander,

wenn das neue Sheet auch wieder Test02 heisst, so wie Du es beschreibst, musst Du gar nichts ändern, da sich ja bei gleichem Namen die Verknüpfungen automatisch ändern.

CU Aliba

Antwort 2 von Saarbauer

Hallo,

du hast dein Prolem vielleicht nicht so dargestellt wie du es meinst, abel was @Aliba schreibt ist so richtig. Ich glaube aber, dass du Monatsergebnisse eines Jahres in eine Übersicht bringen willst.

wie wäre es mit einem Beispiel.

Gruß

Helmut

Antwort 3 von Knecky

Hallo und danke für die schnelle Antwort!
Helmut hat recht, ich habe mich wohl etwas umständlich ausgedrückt. Ich versuche es mal etwas präziser:
Ich möchte aus einer monatlich erstellten Excel Tabelle (Test02.xls) die nur aus einem Sheet besteht, diesen in einer anderen Excel-Datei (Test1.xls)aufbereiten (auf die verschiedenen Monate aufsplitten) und dann zum Import in eine Datenbank vorbereiten.
Da sich im Dateinamen von Test02.xls immer nur eine Zahl ändert, habe ich in Test1 den sheet source angelegt, der im Feld E2 mit diesem Befehl: =VERKETTEN(A2;B2;"_";C2;D2) den Dateinamen der Test02 erstellt. Nun brauche ich nur im Feld B2 eine Zahl ändern, und der Dateiname ist aktualisiert. In der gleichen Datei (Test1) sind die Monate auf einzelne Sheets aufgeteilt. Diese sollen nun die Informationen aus Test 2 beziehen. Damit ich nicht immer den Test2 Namen für Test02 in jedem Monat ändern muss, habe ich mir ja den Source sheet angelegt.
Die Daten bekomme ich in die Monate mit dem Befehl:
=´[Test02.xls]Tabelle1´!$C$16.
Das klappt ja auch soweit. Nur will ich halt nicht manuell alle 12 Monatssheets monatlich ändern müssen (sehr viele Daten).
Der Teil in der eckigen Klammer ist identisch mit dem Ergebnis des VERKETTEN Befehls (stört euch bitte nicht am Unterstrich, ich habe der Einfachheit halber den Dateinamen in Test02 geändert).
Jetzt kommt die eigentliche Frage: Wie kann ich in dem Befehl =´[Test02.xls]Tabelle1´!$C$16 den Teil in der eckigen Klammer aus dem sheet source beziehen. Das klappt bei mir irgendwie nicht.
Danke schonmal für eure HIlfe!
Alexander

Antwort 4 von Aliba

Hi Alexander,

rein theoretisch klappt das mit INDIREKT, wobei

1. Die Quelldatei geöffnet sein muss

2. Der über Verketten erzeugte Textstring exakt Deiner normalen Verknüpfung entsprechen muss, also incl. der eckigen Klammern, incl. der ´-Zeichen.

Der Formelansatz wäre dann:
=INDIREKT(VERKETTEN(.....&....&....&...))

wie gesagt, beachte 1.
und die exakte Schreibweise.

CU Aliba

Antwort 5 von Knecky

Hallo Aliba,
danke für die schnelle Antwort.
Wenn ich den Befehl =INDIREKT("source!E1")
im Monatssheet innerhalb der gleichen Datei eintrage, wird der richtige Dateiname der zweiten Datei angezeigt (Test02.xls).
Wenn ich den Befehl: =´[Test02.xls]Tabelle1´!$C$16
nun so umbaue: =´[INDIREKT("source!E1")]Tabelle1´!$C$16 bekomme ich ein #BEZUG als Ergebnis.
Was mache ich falsch?
Bis später
Alexander

Antwort 6 von Aliba

Hi Alexander,

wenn ich Dich richtig verstehe steht in source!E1 der Text Test02.xls. Du musst nun aber diesen Ausdruck als Text darstellen:
´[Test02.xls]Tabelle1´!$C$16

Die Zeichen ´ lassen wir erstmal weg.

Das sollte dann so aussehen, wenn in source!E1
Test02.xls steht:

=INDIREKT("["&source!E1&"]Tabelle1!C16")

UND WICHTIG!! Test02.xls MUSS geöffnet sein.

Wenns dann immer noch nicht funktioniert, dann müssen wir trotzdem die `- Zeichen mit einbauen.

CU Aliba

Antwort 7 von Knecky

Funktioniert!
Aliba, du bist der Excelgott!
Vielen Dank nochmal, das erleichtert meine Arbeit wesentlich!!!!!
Alexander

Antwort 8 von Knecky

Eine letzte Frage noch Aliba:
Da ich sehr viele Zeilen habe und durch ziehen der E1 Wert zu E2 usw. geändert wurde, aber die Tabellenzelle gleich blieb, habe ich durch einfügen
=INDIREKT("["&source!$E$1&"]Tabelle1!C16") schonmal erreicht, das der E-Wert nicht hochzählt. Wie kann ich den C-Wert am Ende denn hochzählen lassen. Der bewegt sich kein bißchen.
Danke schonmal im Voraus
Alexander

Antwort 9 von Aliba

Hi Alexander,

das ist klar, denn es handelt sich ja hier um Text, dann müsste das ganze für die Zelle C16 so aussehen:

=INDIREKT("["&source!$E$1&"]Tabelle1!C"&ZEILE(A16) )

CU Aliba

Antwort 10 von Knecky

Genial!
Danke vielmals nochmal!
Alexander

Antwort 11 von Portiere

Hallo Aliba!

Ich habe das gleiche Problem, nur dass ich keinen direkten Zellbezug verwende, sonder einen verketteten Pfad im Sverweis verwenden möchte - welcher mit =Verketten... nicht funktioniert!

Gibt es hier auch eine Möglichkeit?

Vielen Dank und liebe Grüße
aus Tirol

Christoph

Antwort 12 von Aliba

Hi Christoph ,

das geht natürlich auch.
Nachdem INDIREKT mappenübergreifend ja nur funktioniert, wenn die Quelldatei geöffnet ist, wird der Pfad auch nicht benötigt, da die Datei ja geöffnet sein muss.

Theoretisch funktioniert dann der SVERWEIS so:
=SVERWEIS(Suchbegriff;INDIREKT(hier wird dann über Verketten bzw.& der Bezug zu dem Tabellenbereich der anderen Datei hergestellt);Spaltenverweis;0)

Aber besser wäre es, zu erläutern, was Du genau erreichen willst, möglicherweise gibt es ja auch eine andere Möglichkeit mit z.B. BEREICH.VERSCHIEBEN

CU Aliba

Antwort 13 von Portiere

Hallo Aliba,

danke erstmal für die schnelle Antwort! Mein Excel hat glaub ich einen Spinner - ich habs so wie du eingegeben und es kam nix - dann ging ich zu Tisch und es hat gepasst - echt sensationell!

Wir machen montliche Deckungsbeitragsrechnungen pro Category. In den Zeilen stehen die Kostenarten, in den Spalten die Categories. Pro Monat gibt es einen File. Ich würde nun gerne die Entwicklung über das letzte und vorletzte Jahr darstellen. Dazu vergebe ich pro Category ein Sheet (ergibt ca. 15 Sheets), die jeweils die Kostenarten enthalten. Nun müssen aber die monatlichen Daten in die jeweiligen Spalten pro Sheet, wobei sich der File-Name und so File-Pfad für den SVerweis pro Monat ändern.

Mein erster Versuch war eben durch das Verketten der Textbausteine und die hier entdeckte INDIREKT Formel - aber da die Datei ja dann geöffnet sein muss, ist das auch wieder blöd!

Hast du eine andere Idee? Wäre cool! Ich hoffe
ich habe mich verständlich ausgedrückt und danke dir schon jetzt für die Antwort,

lg Christoph

Antwort 14 von Aliba

Hi Christoph,

also das wird so nichts. Bei INDIREKT muss die Datei geöffnet sein.
Nachdem Du hier quasi 12 verschiedene Dateien hast, sehe ich ausser das evtl. über VBA zu machen , keine Möglichkeit.
VBA ist dann jedoch nicht mein Metier.

Tut mir leid

CU Aliba

Antwort 15 von Portiere

Hallo Aliba,

trotzdem danke! Mal schaun, vielleicht mach ichs über indirekt - mach ich halt alle 12 dateien auf und füg dann die Werte ein! ;)

Alles liebe,

Christoph