Zahl aus String auslesen in Excel mit VBA
Schritt-für-Schritt-Anleitung
Um eine Zahl aus einem String in Excel mit VBA zu extrahieren, kannst du die folgende Funktion verwenden. Diese Funktion sucht nach 6- oder 7-stelligen Zahlen und ignoriert Leerzeichen sowie andere Trennzeichen:
Function getZahl(ByVal myStr As String) As String
Dim regEx As Object
Dim Matches As Object
Dim strTmp As String
Set regEx = CreateObject("Vbscript.RegExp")
With regEx
.Global = True
.Pattern = "(\d{6,7}|\d{3,4} +\d{3,4})(?=(\D|$))" 'Regex für 6- oder 7-stellige Zahlen
If .test(myStr) = True Then
Set Matches = .Execute(myStr)
getZahl = Matches(0).Value
End If
End With
End Function
- Öffne Excel und drücke
ALT
+ F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu (Einfügen > Modul).
- Kopiere den obigen Code in das Modul.
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Verwende die Funktion in einer Zelle, z.B.
=getZahl(A1)
.
Häufige Fehler und Lösungen
-
Problem: Zahlen am Anfang des Strings werden nicht erkannt.
- Lösung: Füge ein Leerzeichen vor dem String hinzu:
myStr = " " & myStr
.
-
Problem: Zahlen mit Kommas oder Punkten werden nicht korrekt erkannt.
- Lösung: Stelle sicher, dass das Regex-Muster Leerzeichen ignoriert.
-
Problem: Mehrere 6- oder 7-stellige Zahlen werden nicht alle ausgegeben.
- Lösung: Überarbeite das Regex-Muster, um alle gewünschten Zahlen zu erfassen.
Alternative Methoden
Falls du nicht VBA verwenden möchtest, kannst du auch folgende Alternativen in Betracht ziehen:
- Textfunktionen in Excel: Verwende
TEXTKETTE
oder LINKS
, RECHTS
und TEIL
, um die gewünschte Zahl manuell zu extrahieren.
- Power Query: Importiere deine Daten in Power Query und verwende die Text-Funktionen von Power Query, um die Zahlen zu filtern.
Praktische Beispiele
Hier sind einige Beispiele, die zeigen, wie die Funktion funktioniert:
Text |
Erwartetes Ergebnis |
porös M30 Gewinde 893575 |
893575 |
druck 0,7bar 623866 |
623866 |
undicht 656 698 |
656698 |
7.703.493: 665571 test S/N: 15.0061: keine Funktion. |
665571 |
das teil 123456 asd987654 enthalten |
123456 |
Verwende die Funktion in der Zelle, um das Ergebnis zu bekommen.
Tipps für Profis
- Regex Leerzeichen ignorieren: Achte darauf, dass dein Regex-Muster so konfiguriert ist, dass es Leerzeichen zwischen den Zahlen ignoriert.
- Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deiner Funktion, um unerwartete Eingaben abzufangen.
- Testen: Teste deine Funktion mit verschiedenen Beispielen, um sicherzustellen, dass sie unter verschiedenen Bedingungen funktioniert.
FAQ: Häufige Fragen
1. Was ist Regex
und wie funktioniert es?
Regex (Regular Expressions) ist eine leistungsstarke Methode zur Verarbeitung von Textmustern. Es ermöglicht dir, spezifische Muster zu definieren, nach denen im Text gesucht werden soll.
2. Wie kann ich die Funktion anpassen, um auch 5-stellige Zahlen zu extrahieren?
Ändere das Regex-Muster in der Funktion zu (\d{5,7}|\d{3,4} +\d{3,4})
, um 5-stellige Zahlen einzuschließen.
3. Wo kann ich mehr über Regex lernen?
Es gibt viele Ressourcen online, darunter Tutorials und Foren, wie das phpwcms Forum
, die dir helfen können, Regex besser zu verstehen und anzuwenden.