VBA, Zahl mit x Ziffern aus Textstring lesen
Hallo zusammen,
Habe folgendes Problem:
Will aus einem Textstring eine Zahl nach folgendem Format auslesen:
Die Zahl startet entweder mit 5400xxxxxxx oder sie startet 10xxxxx
Wollte das ganze mit der folgenden Funktion machen:
InStr(1, SuchString, SuchZeichen, 0)
aber das SuchZeichen kann ich nicht formatieren nach dem Muster: Suchzeichen = "*5400" & "#######"
Das schluckt mir das System nicht, warum ? Das muss doch irgendwie gehen ??!!
Antwort schreiben
Antwort 1 von rainberg vom 03.02.2020, 08:37 Options
Hallo,
probier mal das:
Option Explicit
Sub zahl_holen()
Dim rngC As Range, rngBer As Range
Dim lngI As Long, strZahl As String
Set rngBer = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
For Each rngC In rngBer
strZahl = ""
For lngI = 1 To Len(rngC)
If Mid(rngC, lngI, 1) >= 0 And Mid(rngC, lngI, 1) <= 9 Then
strZahl = strZahl & Mid(rngC, lngI, 1)
End If
Next
rngC.Offset(0, 1).Value = strZahl
Next
End
In A1:Axxx stehen die Strings
In B1:Bxxx werden die extrahierten Zahlen aufgelistet
Allerdings weiß ich nicht, ob ich Dich richtig verstanden habe.
Gruß
Rainer
Antwort 2 von steindesign vom 03.02.2020, 16:27 Options
Hallo Rainer,
Danke vielmal für die Antwort, aber bei mir funktionniert es noch nicht ich erhalte einen Laufzeitfehler...
Also ich habe einen String der sieht folgendermassen aus: "SMS-Voranmeldung Stamm.-Nr: 54003648899 Module: TAM und TM4 Vorwahl -- Datum.- Zeit: 10.02.2008 13:55"
So und in diesem String kann die Stamm Nr. eben aus 5400xxxxxxx oder 10xxxx xxxNr. bestehen und dies will ich auslesen und extrahieren. Dies schaff ich auf einfache Weise nicht.
Liebe Grüsse, Rolf
Antwort 3 von rainberg vom 03.02.2020, 16:50 Options
Hallo Rolf,
an so lange Strings mit mehrfachen Zahlenbereichen hatte ich natürlich nicht gedacht.
Trotzdem funktioniert das Makro, wenigstens teilweise.
Man müsste mehrere Strings vor sich haben um zu untersuchen, wie man die Suche darin evtl. begrenzen könnte.
Ich hänge Dir die Testdatei mal an.
http://www.netupload.de/detail.php?img=61bfdfd089d3a2062c039ad3621a...Gruß
Rainer
Antwort 4 von steindesign vom 03.02.2020, 17:09 Options
Hallo Rainer,
Ja soweit nicht ganz schlecht... aber eben die Zahl bzw. die Stamm.- Nr. möchte ich genau extrahiert bekommen.
Ich zeige Dir mal mein Makro:
Sub Makro1()
Dim SuchText, SuchZeichen, Pos1
SuchText = Range("D7").Value
SuchZeichen = "5400"
Pos1 = InStr(1, SuchText, SuchZeichen, 0)
MsgBox Pos1
Dim strTrim As String
strTrim = SuchZeichen
MsgBox Trim(strTrim)
End Sub
Dies spuckt mir folgendes raus: zuerst die Position 23 dann die 5400 aber eben nur 5400....
Gruss, Rolf
Antwort 5 von rainberg vom 03.02.2020, 19:24 Options
Hallo Rolf,
hab mir Dein Makro angesehen, kann das aber auch nicht vervollständigen, da ich weniger Info habe als Du.
Mich würden die Strings interessieren, wieviele verschiedene Muster gibt es, an welchen Stellen befindem sich die relevanten Zahlen usw.
Dazu müsste man aber mal einen Sack voll solcher Dinger sehen.
Ich würde versuchen den String zu beschneiden um aus dem Reststück die gewünschten Zahlen wie oben beschrieben heraus zu holen.
Natürlich führen auch hier viele Wege nach Rom und jemand hat eine viel bessere Idee.
Gruß
Rainer
Antwort 6 von steindesign vom 03.02.2020, 19:41 Options
Hallo Rainer,
Die Textstrings selber sind nicht relevant, da ich wirklich nur nach den Zahlen suchen will. D.h. z. Teil werden sie mit Text und z. Teil auch ohne Text nur mit Leerschlägen dazwischen versandt. (Dies sind Texte die als SMS ankommen und als E-Mail umgewandelt werden und dann autom. verarbeitet werden sollen... Aber wenn ich dies nicht kann....
Help Help.. Help, Kann uns niemand mehr helfen ???
Wo sind die VBA Krackis ? Wo sind die Vollblut Informatiker ?
Gruss, Rolf