Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1792to1796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zahl mit Länge X aus String lesen

Zahl mit Länge X aus String lesen
17.11.2020 13:02:43
Mike
Hallo zusammen,
in einem String befindet sich ein Mix aus Buchstaben und Zahlen. Irgendwo darin gibt es eine zusammenhängende 6stellige Zahl die ich gerne auslesen möchte.
Sowohl die Position als auch die Zahl selber sowie aufbau bzw Formatierung ist immer unterschiedlich. Lediglich die Länge der Zahl ist vorgegeben.
zB
A12457 - 06Q 798465 - XKA1234_987DL.5 soll 798465 ausgeben
Habe gedacht ich könnte ggf. mit instr nach "######" suchen aber das wäre wohl zu einfach gewesen.
Hat jemand dazu einen Lösungsansatz?
Gruß
Mike

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:08:57
Bernd
Hi,
hier gefunden (http://www.office-loesung.de/ftopic501301_0_0_asc.php), eventuell kannst draus was machen:
Option Explicit
Public Sub Beispiel() Dim objRegEx As Object Dim objMatch As Object Dim objMatchCollection As Object Dim strText As String Dim lZeile As Long Dim iSpalte As Integer For lZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row strText = Range("A" & lZeile).Value Set objRegEx = CreateObject("VBScript.RegExp") With objRegEx .MultiLine = True .Global = True .IgnoreCase = True .Pattern = "\d{6}" Set objMatchCollection = .Execute(strText) End With iSpalte = 2 For Each objMatch In objMatchCollection Cells(lZeile, iSpalte).Value = objMatch.Value iSpalte = iSpalte + 1 Next objMatch Next lZeile End Sub MfG Bernd
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:30:57
Mike
Hallo Bernd,
Danke für deine Antwort. Dies scheint in die selbe Richtung bzw identisch mit der Lösung von Nepumuk zu sein.
Gruß
Mike
AW: ungeprüft
17.11.2020 13:10:59
Fennek
Hallo,
so ähnlich könnte es gehen:

sub T_1
for i = 1 to cells(rows.count, 1).end(xlup).row
Tx = cells(i, 1)
for b = 1 to len(Tx) - 6
if mid(Tx, b, 6) like "######" then cells(i, columns.count).end(xltoleft).offset(,1) =  _
mid(Tx,b, 6)
next b
next i
mfg
AW: ungeprüft
17.11.2020 13:32:45
Mike
Hallo Fennek,
ein schöner Ansatz der mir gut gefällt und nach etwas Umbau auch zu einem tadellosen Ergebnis führt.
Danke dafür.
Gruß
Mike
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:14:12
Nepumuk
Hallo Mike,
ein Beispiel:
Option Explicit

Public Sub Test()
    Dim objRegEx As Object, objMatch As Object
    Dim strText As String
    strText = "A12457 - 06Q 798465 - XKA1234_987DL.5"
    Set objRegEx = CreateObject("VBScript.RegExp")
    With objRegEx
        .Global = True
        .Pattern = "\b\d{6}\b"
        .IgnoreCase = False
        Set objMatch = .Execute(strText)
    End With
    If objMatch.Count = 1 Then MsgBox objMatch.Item(0).Value
    Set objMatch = Nothing
    Set objRegEx = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:34:34
Mike
Hallo Nepumuk,
auch deine Lösung passt perfekt. Ich bin zwar noch nicht ganz dahinter gestiegen aber das Ergebnis passt.
Danke und Gruß
Mike
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:41:30
Nepumuk
Hallo Mike,
einfach so: Suche nach 6 Ziffern \d{6} (d für Digit) an den Wortgrenzen \b (b für Boundaries)
Gruß
Nepumuk
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:49:00
Mike
Hallo Nepumuk,
habe mir das mit den Regulären Ausdrücken grade mal im Web angeschaut.
Kannte ich vorher nicht aber scheint eine prima Sache und gar nicht so kompliziert zu sein.
Danke und Gruß
Mike
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:24:14
Besserwisser
Hallo Mike,
falls auch eine Formel für Dich interessant ist (Text steht in A1, es wird nach einer 6-stelligen Zahl gesucht):
=AGGREGAT(14;6;--(TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));6));1)
Viele Grüße
Christian
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:36:46
Mike
Hallo Chrisitan,
Danke für deinen Ansatz aber ich würde gerne bei einer vollständigen VBA Lösung bleiben.
Werde deine Formel aber im Hinterkopf behalten. Man kann ja nie wissen wann man es mal braucht.
Gruß Mike
Die Länge von A1 ist wurscht.
17.11.2020 14:01:00
A1
=AGGREGAT(14;6;1*(TEIL(A1;ZEILE(X1:X999);6));1)
WF
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:46:01
Matthias
Hi
mal ganz anderer Ansatz:
Tabelle1

 A
1A12457 - 06Q 798465 - XKA1234_987DL.5
2 
3 
412457
5 
6 
7 
843989
9 
10 
11 
12 
13 
14 
1579846
16798465
1798465
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
395

Formeln der Tabelle
ZelleFormel
A3=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A4=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A5=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A6=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A7=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A8=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A9=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A10=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A11=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A12=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A13=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A14=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A15=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A16=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A17=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A18=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A19=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A20=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A21=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A22=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A23=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A24=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A25=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A26=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A27=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A28=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A29=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A30=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A31=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A32=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A33=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A34=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A35=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A36=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A37=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A38=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")
A39=WENNFEHLER(--TEIL($A$1;ZEILE()-2;6);"")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias
Anzeige
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:52:04
Mike
Hallo Matthias,
das scheint mir für meine Verwendung nicht in Frage zu kommen. Aber interessanter Lösungsansatz.
Danke und Gruß
Mike
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:47:49
Daniel
Hi

Deinstring = "A12457 - 06Q 798465 - XKA1234_987DL.5"
dim x
for each x in Split(DeinString, " ")
if x like "######" then Exit for
next
if not x is Nothing then x = Clng(x)
Gruß Daniel
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:55:38
Mike
Hallo Daniel,
auch deine Lösung wäre durchaus eine Überlegung aber es ist leider nicht immer gewährleistet,
dass davor oder danach ein Leerzeichen zu finden ist.
Danke und Gruß
Mike
AW: Zahl mit Länge X aus String lesen
17.11.2020 13:58:10
Daniel
Kann den auch mal eine Folge aus 7 oder mehr Ziffern vorkommen oder ist 6 die maximal mögliche Anzahl?
Gruß Daniel
Anzeige
GLÄ-WEX-WDH
17.11.2020 14:40:00
lupo1
=MAX(LET(x;TEIL(WECHSELN(A1;" ";WIEDERHOLEN(" ";199));SPALTE(A:K)*199-198;199);WENNFEHLER((ABS(x%%-55)&lt=45)*x;)))
ist nicht die kürzeste Variante und vor allem nur im neuesten Excel möglich, dafür aber ohne Einzeltests 1:999 oder 1:LÄNGE, die möglicherweise Power kosten.
Mit der bald zu erwartenden Funktion SPLITTEN wird es dann schöner:
=MAX(WENNFEHLER((ABS(SPLITTEN(A1)%%-55)&lt=45)*SPLITTEN(A1);))

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige