Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahl aus Dateiname extrahieren

Zahl aus Dateiname extrahieren
karl
Mahlzeit zusammen
Ich möchte aus einem Dateinamen eine Zahl extrahieren. die Namen können unter unterschiedlich sein.
Ich such das erste Vorkommen der Zahl
Per Formel und zum lernen bitte auch in vba.
Wie ich den Dateinamen in Zelle anzeige hab ich gefunden
Weiter komme ich aber nicht, habe die Split func. gefunden, aber weiter ?
https://www.herber.de/bbs/user/78595.xls
gruß
karl
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Erste Zahl aus Dateinamen
25.01.2012 14:29:18
Erich
Hi,
per Formel - aus http://www.excelformeln.de/formeln.html?welcher=102 - so:
 B
178595
2 
31

Formeln der Tabelle
ZelleFormel
B1{=1*TEIL(LINKS(A1;MAX(ISTZAHL(TEIL(A1;SPALTE(1:1); 1)*1)*SPALTE(1:1))); VERGLEICH(1;ISTZAHL(TEIL(A1&0;SPALTE(1:1); 1)*1)*1;0); LÄNGE(A1))}
B3{=1*TEIL(LINKS(A3;MAX(ISTZAHL(TEIL(A3;SPALTE(3:3); 1)*1)*SPALTE(3:3))); VERGLEICH(1;ISTZAHL(TEIL(A3&0;SPALTE(3:3); 1)*1)*1;0); LÄNGE(A3))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

(1* habe ich davorgeschrieben, damits eine Zahl wird und nicht Text bleibt.)
Und der Code könnte so aussehen:

Option Explicit    ' immer zu empfehlen
Private Sub CommandButton1_Click()
Dim strName As String, ii As Integer, lngErg As Long
strName = ThisWorkbook.Name
Range("A10").Value = strName
For ii = 1 To Len(strName)
If IsNumeric(Mid$(strName, ii, 1)) Then
lngErg = 10 * lngErg + CLng(Mid$(strName, ii, 1))
Else
If lngErg > 0 Then Exit For
End If
Next ii
Cells(10, 2) = lngErg
End Sub

Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Erste Zahl aus Dateinamen
25.01.2012 14:34:40
karl
Danke Erich, schon eingebaut.
Ich verwende das Makro, weil hierbei die Zahl auch eine andere sein kann.
karl
Danke für deine Rückmeldung, und ...
25.01.2012 14:42:23
Erich
Hi Karl,
noch eine kleine Einschränkung:
Das Mako läuft falsch, wenn die erste Zahl im Text nur einer oder mehreren Nullen besteht.
Wenn dahinter Text und dann wieder Ziffern kommen, werden diese Ziffern zum Ergebnis.
Um das zu vermeiden, müsste man einen (booleschen) Schalter einbauen, den man anstelle von "If lngErg > 0" abfragt.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Danke für deine Rückmeldung, und ...
25.01.2012 14:50:52
karl
OK, danke für diese Info.
-Nullen sind nicht vorgesehen, aber gut zu wissen...
karl

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahl aus Dateiname extrahieren in Excel


Schritt-für-Schritt-Anleitung

Um eine Zahl aus einem Dateinamen in Excel zu extrahieren, kannst Du sowohl eine Formel als auch ein VBA-Makro verwenden. Hier ist eine detaillierte Anleitung für beide Methoden:

1. Formel-Methode:

Du kannst die folgende Matrixformel verwenden, um die erste Zahl aus einem Dateinamen zu extrahieren. Angenommen, der Dateiname steht in Zelle A1:

=1*TEIL(LINKS(A1;MAX(ISTZAHL(TEIL(A1;SPALTE(1:1);1))*SPALTE(1:1)));VERGLEICH(1;ISTZAHL(TEIL(A1&0;SPALTE(1:1);1))*1;0);LÄNGE(A1))
  • Diese Formel sucht die erste Zahl im Dateinamen und gibt sie zurück. Du musst die Formel mit STRG+SHIFT+ENTER abschließen, damit sie als Matrixformel funktioniert.

2. VBA-Methode:

Hier ist ein einfaches VBA-Makro, das die erste Zahl aus dem Dateinamen extrahiert:

Option Explicit
Private Sub CommandButton1_Click()
    Dim strName As String, ii As Integer, lngErg As Long
    strName = ThisWorkbook.Name
    Range("A10").Value = strName
    For ii = 1 To Len(strName)
        If IsNumeric(Mid$(strName, ii, 1)) Then
            lngErg = 10 * lngErg + CLng(Mid$(strName, ii, 1))
        Else
            If lngErg > 0 Then Exit For
        End If
    Next ii
    Cells(10, 2) = lngErg
End Sub
  • Dieses Makro zeigt den Dateinamen in Zelle A10 an und extrahiert die erste gefundene Zahl, die dann in Zelle B10 geschrieben wird.

Häufige Fehler und Lösungen

  • Fehler: Die Formel gibt einen Fehler zurück.

    • Lösung: Stelle sicher, dass Du die Formel als Matrixformel eingibst (STRG+SHIFT+ENTER).
  • Fehler: Das VBA-Makro funktioniert nicht korrekt, wenn der Dateiname mit Nullen beginnt.

    • Lösung: Der Code muss angepasst werden, um sicherzustellen, dass Nullen nicht als gültige Zahl betrachtet werden. Füge einen booleschen Schalter ein, um dies zu verhindern.

Alternative Methoden

Neben den oben genannten Methoden kannst Du auch Textfunktionen wie FINDEN oder SEARCH in Kombination mit TEIL verwenden, um die Zahl zu isolieren. Diese sind jedoch weniger flexibel als die Matrixformel oder das VBA-Makro.


Praktische Beispiele

Angenommen, Dein Dateiname ist bericht_2023_78595.xlsx, und dieser steht in Zelle A1. Mit der Formel erhältst Du:

=1*TEIL(LINKS(A1;MAX(ISTZAHL(TEIL(A1;SPALTE(1:1);1))*SPALTE(1:1)));VERGLEICH(1;ISTZAHL(TEIL(A1&0;SPALTE(1:1);1))*1;0);LÄNGE(A1))

Das Ergebnis in Zelle B1 wäre 78595.

Mit dem VBA-Makro wird 78595 in Zelle B10 ausgegeben.


Tipps für Profis

  • Nutze benutzerdefinierte Funktionen in VBA, um die Lesbarkeit und Wiederverwendbarkeit zu erhöhen.
  • Experimentiere mit regulären Ausdrücken in VBA, um komplexere Muster bei der Zahlensuche zu erkennen.
  • Halte Deine Excel-Version auf dem neuesten Stand, um sicherzustellen, dass alle neuen Funktionen und Verbesserungen verfügbar sind.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zahlen aus einem Dateinamen extrahieren? Du kannst die Formel anpassen oder ein komplexeres VBA-Makro schreiben, das alle Zahlen im Dateinamen findet.

2. Was mache ich, wenn die Zahl nicht das erste Vorkommen ist? In diesem Fall musst Du die Suche in der Formel oder im Makro anpassen, um die spezifische Position zu definieren, von der aus die Suche beginnen soll.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige