Teile eines Dateinamens oder Inhalte externer Variablen automatisch in Exceltabelle einfügen?

...komplette Frage anzeigen

2 Antworten

Mit Cmd selbst kannst du soweit ich weiß nichts innerhalb einer Excel-Datei ändern. Außer den üblichen DOS-Befehlen und ein paar Variablenfunktionen kann das Ding quasi nichts.

Du kannst aber mit den Excel-Funktionen den Dateinamen der Excel auslesen. Der Übersicht halber zeig ich dir das mal in mehreren Schritten.

1. Den kompletten Namen des aktuellen Arbeitsblattes auslesen (in Zelle A1):
=ZELLE("Dateiname";$A$1)
Da sollte z.B. sowas wie "C:\\\\meineDateien\\\\[test.xlsx]Tabelle1" rauskommen.

2. Den Dateinamen extrahieren (in Zelle B1):
=TEIL(A1;FINDEN("[";A1)+1; FINDEN("]";A1)- FINDEN("[";A1)-2)
Da bleibt dann noch "test.xlsx" übrig

3. Die Informationen aus dem Dateinamen extrahieren. Da ich nicht weiß, wie deine Dateien heißen, müsstest du an der Stelle selbst was bauen.

Antwort bewerten Vielen Dank für Deine Bewertung
Maisbaer78 06.09.2016, 18:32

Danke, genau das habe ich gesucht, mir war nicht bewusst, das es so einfach zu lösen sein soll. Ich werde das morgen mal testweise umsetzen.

0
Maisbaer78 06.09.2016, 18:52
@Maisbaer78

Mh also mir erschliesst sich die Syntax der Aufschlüsselung soweit, ich bin mir nur nicht ganz sicher, wie die +1 und -1 vorallem aber die -2 zu deuten sind.  Damit ich sicher sein kann, das richtig zu interpretieren, wäre mir mit etwas mehr Info dazu geholfen. 

Ich sehe das so, dass die +1 den Teil nach der "]" in die Zelle schreibt, und die folgende -1 den Teil nach der "]" abschneidet. Allerdings bin ich mir nicht ganz sicher, was die -2 genau bewirkt.

Schneidet diese den String nach den folgenden 2 Teilen ab? Das wäre ja nur "Tabelle1" und sollte doch als ein String erkannt werden oder nicht?

Kann ich zb. auch nach Leerzeichen suchen? Oder den String von hinten an aufklamüsern?

Die korrekte Struktur einer Datei ohne Pfad wäre nämlich in etwa so..

0815 (6660815) Kommentar.XLS

die 0815 wäre die Version, die Zahl in Klammern(könnte aber auch ein Text oder gemischt sein, die Klammern wären aber immer da) ist die Beschreibung und der Kommentar ist der Kommentar....logisch irgendwie.

Zuhaus hab ich leider nur openoffice, das beherrscht die Klarsprache offensichtlich auch, aber gibt das Ergebnis etwas anders Strukturiert aus.

Ich werds wie gesagt morgen noch testen, aber falls da noch Ergänzungen vorzubringen sind, wär ich nicht abgeneigt. Nochmals danke.

0
Maisbaer78 06.09.2016, 19:04
@Maisbaer78

oh hab grad gesehen, dass ich mich verlesen habe, es gibt ja keine -1

0
daCypher 07.09.2016, 09:13
@Maisbaer78

Hi, ich war gestern nicht mehr hier, deshalb antworte ich jetzt erst.

Um deine Fragen zu beantworten, nehme ich mal die Funktionen aus meinem zweiten Punkt auseinander:

=TEIL(A1;FINDEN("[";A1)+1; FINDEN("]";A1)- FINDEN("[";A1)-2)

Die Funktion "Teil" braucht drei Argumente: Der Text, aus dem was ausgeschnitten werden soll, die Position des ersten Zeichens, was ausgeschnitten werden soll und die Länge des Textes, der ausgeschnitten werden soll.

Die Funktion "Finden" braucht die zwei Argumente: Das Zeichen oder die Zeichenfolge, die gesucht werden soll und der Text, in dem das Zeichen vorkommt.

=TEIL(A1; ... aus dem Text, der in A1 steht, soll was ausgeschnitten werden.

... FINDEN("[";A1) +1; ... das erste Zeichen, was ausgeschnitten werden soll, ist eins nach der eckigen Klammer

danach muss die Länge berechnet werden (was ich immer ziemlich blöd finde, ich würde auch lieber einfach die Position des letzten Zeichens angeben können)

... FINDEN("]";A1) ... es wird also die Position der schließenden Klammer gesucht 

... - FINDEN("[";A1) ... davon wird die Position der öffnenden Klammer abgezogen. Dadurch hätten wir jetzt die Länge des Textes mit den beiden Klammern.

... -2) ... also muss noch 2 abgezogen werden, damit wir die Länge des Textes ohne die Klammern haben.

Nachher schreib ich dir noch, wie du den Beispielpfad auseinander kriegst.

1
daCypher 07.09.2016, 12:51
@daCypher

Hab grad gesehen, dass statt -2 doch -1 drinstehen muss. Oder wenn du das ".XLS" von vornherein weghaben willst, dann -5.

Also in A1 steht: =ZELLE("Dateiname";$A$1)
Ergebnis: C:\meineDateien\[0815 (6660815) Kommentar.XLS]Tabelle1

In B1 steht: =TEIL(A1;FINDEN("[";A1)+1; FINDEN("]";A1)- FINDEN("[";A1)-5)
Ergebnis: 0815 (6660815) Kommentar

Jetzt bleiben nur noch die drei Bereiche vor den Klammern, in den Klammern und hinter den Klammern übrig, die auseinander genommen werden müssen

C1: =LINKS(B1;FINDEN(" (";B1)-1)
Ergebnis: 0815
Das -1 muss rein, weil sonst das Leerzeichen auch mitkopiert wird. (Wir wollen alles kopieren, bis ein Zeichen vor dem Leerzeichen und der öffnenden Klammer)

D1: =TEIL(B1; FINDEN(" (";B1)+2; FINDEN(") ";B1)-FINDEN(" (";B1)-2)
Ergebnis: 6660815
Hier muss +2 bzw. -2 stehen, weil wir hier immer nach zwei Zeichen suchen (Leerzeichen + öffnende Klammer, bzw. schließende Klammer + Leerzeichen). Wie gesagt, das -2 in der ursprünglichen Antwort war nicht richtig.

E1: =RECHTS(B1;LÄNGE(B1)-FINDEN(") ";B1)-1)
Ergebnis: Kommentar
Man kann es auch mit "TEIL" machen, wie bei D1, aber ich will dir gerne mehrere Funktionen zeigen. Die Funktion "RECHTS" funktioniert ähnlich, wie die Funktion "LINKS", nur dass halt vom rechten Ende des Texts was kopiert wird. Die Funktion "LÄNGE" dürfte selbsterklärend sein, die gibt einfach die Länge des Texts in B1 an. Davon wird die Position der schließenden Klammer abgezogen und da nach der schließenden Klammer noch ein Leerzeichen kommt, muss noch ein -1 hinten ran.

Mit diesen -1 und +1 hab ich am Anfang einfach immer so lange rumprobiert, bis es gepasst hat. Mittlerweile hab ich ein Gefühl dafür, was wo abgeschnitten werden muss, aber wie du gesehen hast, hat sich bei mir ja auch ein fehlerhaftes -2 eingeschlichen, wo eigentlich ein -1 hingehört hätte.

1
Maisbaer78 09.09.2016, 10:54
@daCypher

Danke, es hat ne Weile gedauert, bis ich das kapiert habe, ein "letztes Zeichen" gibt es nicht. Das ist ja kompliziert gemacht :(

Aber jetzt denke ich, ich hab es... vielen vielen Dank. Die Beispiele im Netz sind immer alle recht unpraktisch, weil eben auf solche variablen Wortlängen nicht eingegangen wird.

1
daCypher 09.09.2016, 11:04
@Maisbaer78

Bitteschön, sehr gerne. Ja, dass es keine Funktion für "Von-Bis ausschneiden" gibt, finde ich auch schade. Das könnte man sich höchstens selbst mit VBA zusammenbasteln.

0

Mit der Formel

=ZELLE("Dateiname")

erhälst du den kompletten Pfad der Datei. Das funktioniert allerdings nur bei bereits gespeicherten Dateien, nicht bei neuen Dokumenten. Wenn die Dateinamen in feste Zeichenbreiten strukturiert ist, kannst du etwa so einen bestimmten Teil extrahieren:

=TEIL(ZELLE("Dateiname");20;10)

D. h: Gib aus dem Pfad beginnend beim 20. Zeichen die nächsten 10 Zeichen wider.

Falls du keine festen Zeichenbreiten hast, kannst du auch die Funktionen TEIL und FINDEN kombinieren. Vielleicht machst du mal ein oder zwei konkrete Beispiele, dann kann man dir genauer helfen.

Antwort bewerten Vielen Dank für Deine Bewertung
Maisbaer78 06.09.2016, 18:33

Vielen Dank für die rasche Antwort, ich bin leider erst morgen in der Lage das zu testen. Wenn ich auf Schwierigkeiten stoße, werde ich ein genaueres Beispiel erbringen. :) Vielen Dank.

0

Was möchtest Du wissen?