Dateinamen suchen und mit einer Liste vergleichen
#1
Hallo Zusammen!

Ich stehe gerade vor einem Problem mit MS Excel 2010 und hoffe ihr könnt mir helfen.
Ich habe eine sehr lange Liste mit Dateinamen (allerdings ohne Dateiendung) in einer Arbeitsmappe (Spalte A) und möchte überprüfen ob es in einem bestimmten Ordner (z.B.: D:\Test) Dateien mit diesen Namen gibt. Es soll also jeder Wert in Spalte A überprüft werden und wenn im Ordner eine Datei (.doc oder .docx) mit identischem Namen vorhanden ist, soll in der Selben Zeile in Spalte B der Wert "Ja" ausgegeben werden. Falls keine Datei mit diesem Dateiname existiert soll auch kein Wert eingetragen werden.
Das ganze soll dann natürlich beim Aufrufen der Excel-Datei automatisch überprüft werden.
Ist dies irgendwie möglich umzusetzten?
Vielen Dank für eure Hilfe.

Gruß
Thomsen
Top
#2
Hi Thomsen,

habe mal aus excelformeln.de den dortigen Beitrag für dein Problem übernommen:

Ist es das, was du dir vorstellst?

Tabelle1

ABC
1gespeicherte Dateiliste auf LW DDeine Dateiliste
2filtern.xlsmfilternja
3Mappe1.xlsbMappe1ja
4pdf-erstellen.pdfmaus-einfangen
5pdf-erstellen1.xlsxpdf-erstellenja
6pdf-erstellen2.pdfpdf-erstellen2ja
7testschreibschutz.xlsbpdf-erstellen1ja
8Zahlenfolge zählen-mit HS.xlsxtest-schreibschutz
9Zahlenfolge zählen-mit zählenwenns.xlsxtest-schreibschutz2
10meine_alte_sammlung
Formeln der Tabelle
ZelleFormel
C2{=WENN(ISTZAHL(VERGLEICH(B2;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C3{=WENN(ISTZAHL(VERGLEICH(B3;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C4{=WENN(ISTZAHL(VERGLEICH(B4;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C5{=WENN(ISTZAHL(VERGLEICH(B5;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C6{=WENN(ISTZAHL(VERGLEICH(B6;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C7{=WENN(ISTZAHL(VERGLEICH(B7;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C8{=WENN(ISTZAHL(VERGLEICH(B8;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C9{=WENN(ISTZAHL(VERGLEICH(B9;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
C10{=WENN(ISTZAHL(VERGLEICH(B10;LINKS($A$2:$A$10;FINDEN(".";$A$2:$A$10)-1);0));"ja";"")}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Deinen Pfad, aus dem ausgelesen werden soll, musst du natürlich im Namensmanager ändern.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • thomsen
Top
#3
Hallöchen,

oder so - mal nur bezogen auf den Ergebnisteil. Die Dateinamen kann man wie in Günters Beispiel ermitteln, das hab ich mir hier gespart.

Arbeitsblatt mit dem Namen 'Tabelle1'
 ABC
1ich.nicht.xlsich2
2ich.xlsnicht1
3ich.xlsx  
4nicht.doc  

ZelleFormel
C1=ZÄHLENWENN(A1:A10;B1&".????")+ZÄHLENWENN(A1:A10;B1&".???")
C2=ZÄHLENWENN(A2:A11;B2&".????")+ZÄHLENWENN(A2:A11;B2&".???")
Diese Tabelle wurde mit Tab2Html (v2.5.0) erstellt. ©Gerd alias Bamberg

Die Zählung kann man natürlich auch in Wahrheitswerte ummünzen oder wie auch immer man es haben möchte.

Bei Günters Lösung würde glaube auch die Datei ich.nicht.xls gefunden, auch wenn nur ich.xls der Treffer wäre. Der Punkt ist, dass eine Datei auch Punkte im Namen haben kann und nur der Teil nach dem letzten Punkt die Extension ist.
Im Beispiel gehe ich davon aus, dass Du Extensions mit 3 oder 4 Zeichen verwendest. Es gibt aber auch kürzere, man müsste die Formel dann entsprechend erweitern.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • thomsen
Top
#4
Hi André,

jetzt arbeite ich schon sooo lange mit PC und Excel, aber das


Zitat:Der Punkt ist, dass eine Datei auch Punkte im Namen haben kann und nur der Teil nach dem letzten Punkt die Extension ist.

habe ich bis dato nicht gewusst. Ich war immer der Meinung, dass Punkte als nicht zugelassene Zeichen gelten und habe sie deshalb nie benutzt. Für mich waren nur Binde- und Unterstrich als Trenner relevant.

Aber man lernt nie aus. :68:

Auf mein Beispiel gemünzt heißt das für Thomsen, alle Punkte bis auf den Extensionpunkt durch andere Zeichen oder Leerzeichen ersetzen. Ich will ja schließlich, dass mein Vorschlag funktioniert. Angel
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#5
Vielen Dank für eure schnellen Antworten. :23:
 
Das hilft mir schon Mal sehr weiter. Das Einlesen der Dateinamen funktioniert auf diesem Weg sehr gut und auch eure "Suchfunktionen" erfüllen sehr gut den Zweck.
Leider wird aber bei mir die Dateiliste nicht automatisch aktualisiert. Wird z.B. eine Datei umbenannt, hinzugefügt oder gelöscht hat dies keine Auswirkungen auf die Excel-Liste.
Bei mir ist die "Berechnungsoption" auf automatisch eingestellt und auch ein "Neu Berechnen" über die F9-Taste bzw. "Blatt berechnen" mittels Umschalt+F9 zeigt keine Wirkung.
Woran liegt das und gibt es eine Möglichkeit dies automatisch anpassen zu lassen?

Vielen Dank.

Beste Grüße
Thomsen
Top
#6
Hallo Thomson,

probiere es mal mit einer VBA-Funktion, UDF genannt.
In ein allgemeines Modul kommt folgender Code:

Code:
Public Function DateiVorhanden(strDatei As String) As Boolean
 Dim strPfad As String
 strPfad = "D:\Test\"
 DateiVorhanden = Len(Dir(strPfad & strDatei & ".doc*"))
End Function

Diese Funktion verwendest Du dann so:

AB
1Meine ListeVorhanden
2abcJa
3defNein
Formeln der Tabelle
ZelleFormel
B2=WENN(DateiVorhanden(A2);"Ja";"Nein")
B3=WENN(DateiVorhanden(A3);"Ja";"Nein")

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

Diese Funktion aktualisiert sich wenigstens mit Strg+Alt+F9.

Gruß Uwe
Top
#7
Hi Thomsen,


Zitat:Bei mir ist die "Berechnungsoption" auf automatisch eingestellt und auch ein "Neu Berechnen" über die F9-Taste bzw. "Blatt berechnen" mittels Umschalt+F9 zeigt keine Wirkung.

neu berechnen musst du mit STRG-ALT-F9. Bei mir wird alles ordentlich aktualisiert.

Edit:

Ich sehe gerade, dass Uwe bei seiner Lösung mit der UDF ebenfalls diese Kombination anwendet. Du hast jetzt die Qual der Wahl. ;)
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#8
Hallöchen,

F9 geht auch, wenn Du in der Namensdefinition irgendwie die Funktion JETZT unterbringst, z.B. so:
=DATEIEN("D:\Test\*.*")&WECHSELN(JETZT();JETZT();"")
Das hat dann auch noch den Vorteil, dass eine Neuberechnung automatisch beim Öffnen der Datei erfolgt - wenn die Berechnung auf automatisch eingestellt ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hi André,

kein schlechter Tipp. An die Tastenkombination denkt der eine oder andere vielleicht nicht (mehr), aber mit dieser Formelergänzung klappt das einwandfrei. Thumps_up

Allerdings gibt es da den berühmten Wermuthstropfen. So wie Thomsen in seiner Eröffnungsfrage schreibt,

Zitat:Ich habe eine sehr lange Liste mit Dateinamen...


dürfte die volatilie Funktion ein gewaltiger Performancekiller sein. :(
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#10
Vielen Dank für eure Hilfe.
Die Kombination mit der JETZT() Funktion funktioniert perfekt. Das habe ich gesucht. Thumps_up
Bisher klappt es auch noch mit der Prefomance ganz gut. Hoffe das bleibt so, wenn meine Liste noch länger wird.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste