10stellige Zahl finden

Bild

Betrifft: 10stellige Zahl finden
von: Christoph Zahn
Geschrieben am: 22.09.2015 18:14:38

Hallo ich hab nochmal ein denke ich kleines Problem für euch.
Wie bekomme ich aus dieser Zeile:
SEPA-Überweisung anTasxa Freerebay-Artnr. 111680499788, 111680511514,111680514517 , ssxsxDEsssssssssss6ssssss-Überweisung anTasxsa Freerebay-Artnr. 111680499788, 111680511514,111680514517 , onswelsxwoDE1ws5scdc97sx6INGDDsxX
die 10 stelligen Zahlen in die Zelle daneben per Makro eingefügt?
Getrennt dann einfach durch Komma in einer Zelle.
Gruß Christoph

Bild

Betrifft: AW: 10stellige Zahl finden
von: Daniel
Geschrieben am: 22.09.2015 18:52:46
Hi
folgender Code in ein allgemeines Modul:

Function ZahlenAusText(txt As String, Stellen As Long) As String
Dim erg As String
Dim TeilTexte
Dim i As Long
For i = 1 To Len(txt)
    If Mid(txt, i, 1) Like "#" Then
        erg = erg & Mid(txt, i, 1)
    Else
        erg = erg & " "
    End If
Next
        
TeilTexte = Split(WorksheetFunction.Trim(erg), " ")
erg = ""
For i = 0 To UBound(TeilTexte)
    If Len(TeilTexte(i)) >= Stellen Then erg = erg & ", " & TeilTexte(i)
Next
ZahlenAusText = Mid$(erg, 3)
End Function
dein Makro macht dann folgendes (Selection sein der Zellbereich, der die Zahlen enthalten soll)
with Selection
    .FormulaR1C1 = "=ZahlenAusText(RC[-1],10)"
    .Formula = .Value
End with
Gruß Daniel

Bild

Betrifft: AW: 10stellige Zahl finden
von: Michael
Geschrieben am: 22.09.2015 19:01:40
Hi Christoph,
ich sehe hier nur 12-stellige Zahlen.
Hier ne UDF, die Du bitte in ein Modul kopierst:

Option Explicit
Public Function UDF_Zahlen(c As Range) As String
Dim i&
Dim a
'Stop
a = Split(c.Value, ",")
For i = LBound(a) To UBound(a) - 1
  a(i) = Right(Trim(LTrim(a(i))), 12)
  If Mid(a(i), 1, 1) >= "0" And Mid(a(i), 1, 1) <= "9" Then UDF_Zahlen = UDF_Zahlen & a(i) & "," _
Next
If Len(UDF_Zahlen) < 12 Then UDF_Zahlen = "#n.v."
End Function
Wenn Dein String z.B. in A1 steht und Du in A2 die entsprechenden Zahlen haben willst, schreibst Du in A2:
=UDF_Zahlen(A1)
Schöne Grüße,
Michael

Bild

Betrifft: AW: 10stellige Zahl finden
von: Christoph Zahn
Geschrieben am: 22.09.2015 19:39:22
Michael mit deinen Makro hab ichs hinbekommen.
Das letzte Komma wenn keine Zahl mehr ist kann man das verschwinden lassen?

Bild

Betrifft: Das Problem hättest du mit meinen UDFs ...
von: Luc:-?
Geschrieben am: 22.09.2015 19:49:01
…gar nicht erst, Christoph!
Luc :-?

Bild

Betrifft: AW: Das Problem hättest du mit meinen UDFs ...
von: Christoph Zahn
Geschrieben am: 22.09.2015 20:15:14
Hmmm bekomm den Link leider nicht geöffnet.
Wie gesagt die Lösung funktioniert aber ist mir etwas umständlich.
Ich hab immer den gleichen Aufbau in einer Tabelle.
Dort stehen in Spalte C diese Einträge über mehrere Zeilen.
SEPA-Überweisung ansdfsds Zansddesdrebay-Artnr. 111687252372, 111687256094,111687258394, 111687261274, onkesfnoDEfs4sdf754WfsD1WDB
ich habe schon ein bestehendes Makro welches andere Sachen ausführt.
Nun hätte ich gedacht das ich dort einen einfachen Code(keine Udf) einfügen kann was mir die 12 artikelnummern in der gleichen Zeile in Spalte G ausgibt.
Sorry das meine erste Erklärung nicht genauer beschrieben war.
2. Problem wäre noch das in Spalte C dann ab und zu Einträge sind wo nur Artikelnummern identisch sind. Sepa usw unterscheidet sich voneinander. Meistens wenn es vorkommt sind es 3 identische einträge mit Aritkelnummern. Dort mache ich das im Moment händisch, das die beiden älteren Einträge in Spalte G zum bsp den Eintrag doppelt bekommen. Der neueste Eintrag soll dann nur die 12 stellige Artikelnummer in Spalte G haben.
Erkennen durch alte und neue Einträge erfolgt durch Spalte B. Dort ist das Datum des Eintrages enthalten.
Hoffe man kann nachvollziehen wie ich das meine.
Gruß Christoph

Bild

Betrifft: Keine Ahnung, was da schief gelaufen ist!
von: Luc:-?
Geschrieben am: 22.09.2015 22:21:40
DownLoadLink:
https://www.herber.de/bbs/user/99024.xlsm
Luc :-?

Bild

Betrifft: klar
von: Michael
Geschrieben am: 22.09.2015 20:40:11


Option Explicit
Public Function UDF_Zahlen(c As Range) As String
Dim i&
Dim a
Dim erster As Boolean
'Stop
erster = True
a = Split(c.Value, ",")
For i = LBound(a) To UBound(a) - 1
  a(i) = Right(Trim(LTrim(a(i))), 12)
  If Mid(a(i), 1, 1) >= "0" And Mid(a(i), 1, 1) <= "9" Then
    If erster Then
      UDF_Zahlen = UDF_Zahlen & a(i)
      erster = False
     Else
      UDF_Zahlen = UDF_Zahlen & "," & a(i)
    End If
  End If
Next
If Len(UDF_Zahlen) < 12 Then UDF_Zahlen = "#n.v."
End Function


Bild

Betrifft: Man kann natürlich auch nur XlStandardFktt ...
von: Luc:-?
Geschrieben am: 22.09.2015 19:27:57
…oder bereits im Archiv zu findende allgemeine und auch anderweitig nachnutzbare UDFs verwenden, Christoph,
wie nachfolgend gezeigt. Die mehrzelligen MatrixFmln prüfen nicht die 10Stelligkeit, da im BspText nur solche Zahlen enthalten sind! Bei horizontaler Anordnung entfällt MTRANS!
1. Varianten mit nur 2 hierin zu findenden UDFs …
1.1 für alle Zahlen (mit Wiederholungen):
{=MTRANS(VSplit(GLÄTTEN(VJoin(WENN(ISTZAHL(VSplit(WECHSELN(A1;".";",");",";1));VSplit(WECHSELN(A1; ".";",");",");"");;-2));;1)) }
1.2 für 1malige Zahlen (ohne Wiederholungen):
{=MTRANS(VSplit(VJoin(WENN(ISTZAHL(VSplit(WECHSELN(A1;".";",");",";1));VSplit(WECHSELN(A1;".";","); ",";1);"");;-1);;1)) }
2. Varianten mit (2…)3 UDFs (SplitVx kann mehrere Trennzeichen benutzen und ist in eingeschränkter Nutzungsform in einer hoch­geladenen BspDatei für Oberschlumpf Thorsten im Archiv enthalten) …
2.1 für alle Zahlen (mit Wiederholungen):
{=MTRANS(VSplit(GLÄTTEN(VJoin(WENNFEHLER(--SplitVx(A1;{".".","});"")));;1))}
2.2 für 1malige Zahlen (ohne Wiederholungen):
{=MTRANS(VSplit(VJoin(WENNFEHLER(--SplitVx(A1;{".".","});"");;-1);;1))}
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: LinkAdresse fehlte, s.oben! owT
von: Luc:-?
Geschrieben am: 23.09.2015 03:39:08
:-?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "10stellige Zahl finden"