Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1100to1104
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

Text mit Zahl in neue Zelle auslesen

Text mit Zahl in neue Zelle auslesen
Lemmi
Hallo zusammen,
ich habe einen Text ais einer Datenbank den ich Teilweise auslesen möchte.
z. B. Text
A) in A1 : Büro ABC Hamburg 1256 zu Hause
B) in A2 : Büro Berlin 12345 in Straße XXX
Nun möchte ich das Wort Hamburg in B1 auslesen! soweit hat man mir bereits vor kurzen geholfen!
Jetzt möchte ich mit der Formel in B1 noch die nachfolgenden Zahlen bis das erste Leerzeichen oder Buchstaben kommt auslesen!
d.h. es sollte in B1 die Ausgabe Hamburg 1256 stehen!
d.h. es sollte in B2 die Ausgabe Berlin 12345 stehen!
Wie kann man das in eine Formel umsetzen?
Gruß
Lemmi
AW: Text mit Zahl in neue Zelle auslesen
16.09.2009 21:47:50
Holger
über einen kleinen Umweg - Daten und Text in Spalten und danach verketten
ist die Zeichenfolge / Anzahl immer identisch?
https://www.herber.de/bbs/user/64484.xls
Nachfrage
16.09.2009 21:53:23
{Boris}
Hi Lemmi,
Nun möchte ich das Wort Hamburg in B1 auslesen! soweit hat man mir bereits vor kurzen geholfen!
Wie sah das denn aus (allgemeingültig) für
  • Büro ABC Hamburg 1256 zu Hause

  • Büro Berlin 12345 in Straße XXX

  • dass da einmal Hamburg und ein anders mal Berlin rauskam?
    Grüße Boris
    AW: Nachfrage
    16.09.2009 22:01:11
    Holger
    eine Variante wäre auch mit Teil und Finden zu arbeiten. Müsstest es nur noch erweitern/verändern.
    https://www.herber.de/bbs/user/64485.xls
    Anzeige
    AW: Nachfrage
    16.09.2009 22:03:57
    Lemmi
    Hallo Boris,
    WENN(SUMMENPRODUKT(ISTZAHL(FINDEN("Hanburg";A1))*1)größer0;"Hamburg";"")&WENN(SUMMENPRODUKT(ISTZAHL(FINDEN("Berlin";A1))*1)größer0;"Berlin";"")
    Wort "größer" wird durch Formelzeichen größer als erstzt !!
    Gruß
    Lemmi
    Das ist doch völlig statisch...
    16.09.2009 22:16:28
    {Boris}
    Hi Lemmi,
    ...und zudem viel zu lang (wozu SUMMENPRODUKT?).
    Gibt es bei Dir nur Berlin und Hamburg - gefolgt von einer Zahl? Oder gibt´s da auch noch was anderes? Wenn ja: Bitte zeig mal ein paar mehr Datensätze!
    Grüße Boris
    AW: Das ist doch völlig statisch...
    16.09.2009 22:28:16
    Lemmi
    Hallo Boris,
    es gibt zur Hamburg; Berlin; München; Köln und Dortmund !
    Gruß
    Lemmi
    Anzeige
    AW: Das ist doch völlig statisch...
    16.09.2009 22:43:15
    {Boris}
    Hi Lemmi,
    bezogen auf A1:
    =WENN(ANZAHL(FINDEN({"Hamburg"."Berlin"."München"."Köln"."Dortmund"};A1));LINKS(TEIL(A1;VERWEIS(99; FINDEN({"Hamburg"."Berlin"."München"."Köln"."Dortmund"};A1));99);FINDEN(" ";TEIL(A1;VERWEIS(99; FINDEN({"Hamburg"."Berlin"."München"."Köln"."Dortmund"};A1));99);FINDEN(" ";TEIL(A1;VERWEIS(99; FINDEN({"Hamburg"."Berlin"."München"."Köln"."Dortmund"};A1));99))+1)-1);"")
    Wenn Du dem Array {"Hamburg"."Berlin"."München"."Köln"."Dortmund"} den Namen x gibst, wird´s auch etwas kürzer:
    =WENN(ANZAHL(FINDEN(x;A1));LINKS(TEIL(A1;VERWEIS(99;FINDEN(x;A1));99);FINDEN(" ";TEIL(A1;VERWEIS(99; FINDEN(x;A1));99);FINDEN(" ";TEIL(A1;VERWEIS(99;FINDEN(x;A1));99))+1)-1);"")
    Grüße Boris
    Anzeige
    AW: Das ist doch völlig statisch...
    17.09.2009 08:24:31
    Lemmi
    Hallo Boris,
    leider bekomme ich mit der Formel nur #Wert heraus!
    Habe ich etwas noch nicht beachtet?
    Vieleich kannst Du eine Beispiel- Datei hochladen.
    Gruß
    Lemmi
    hier mal eine Möglichkeit mit VBA.
    17.09.2009 08:42:54
    Tino
    Hallo,
    Kommt in ein Modul
    Function NameAndZahl(rZelle As Range) As String
    Dim Regex As Object, oMatch As Object
    Set Regex = CreateObject("VBScript.RegExp")
    With Regex
        .IgnoreCase = False
        .MultiLine = True
        .Pattern = "\w{1,50} \d{1,10}"
        .Global = True
         Set oMatch = .Execute(rZelle.Text)
    End With
    
    If oMatch.Count > 0 Then
     NameAndZahl = oMatch(0).Value
    End If
    
    End Function
    
    In der Zelle kannst Du dies wie eine Formel verwenden.
     AB
    1Büro ABC Hamburg 1256 zu HauseHamburg 1256
    2Büro Berlin 12345 in Straße XXXBerlin 12345

    Formeln der Tabelle
    ZelleFormel
    B1=NameAndZahl(A1)
    B2=NameAndZahl(A2)

    Gruß Tino
    Anzeige
    AW: hier mal eine Möglichkeit mit VBA.
    17.09.2009 10:37:44
    Lemmi
    Hallo Tino,
    vielen vielen Dank! klappt super!
    ...und weil die Funktion so gut klappt würde ich Dich noch fragen wollen ob Du dein Makro
    auch mit einer Funktionsformel hinterlegen kannst?
    Es soll der Text von der Zahl getrennt werden!
    Also Hamburg 1256 soll getrennt werden!
    z. B.
    in A3 Hamburg
    in A4 1256
    Sub Split_Zahl_TXT()
    Dim meAr, tempText
    Dim Bereich As Range
    Dim A As Long
    Set Bereich = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(0, 1))
    meAr = Bereich
    For A = Lbound(meAr) To Ubound(meAr)
    If InStr(meAr(A, 1), " ") > 0 Then
    tempText = meAr(A, 1)
    meAr(A, 1) = Left(meAr(A, 1), InStrRev(meAr(A, 1), " ") - 1)
    meAr(A, 2) = Right$(tempText, Len(tempText) - InStrRev(tempText, " "))
    If IsNumeric(meAr(A, 1)) Then meAr(A, 1) = meAr(A, 1) * 1
    End If
    Next A
    Bereich = meAr
    End Sub
    

    Gruß
    Lemmi
    Anzeige
    könnte so funktionieren.
    17.09.2009 11:18:25
    Tino
    Hallo,
    In ein Modul
    Function NameAndZahl(rZelle As Range, Optional byParameter As Byte = 0) As Variant
    Dim Regex As Object, oMatch As Object
    'byParameter  0 = alle, 1 = nur Text , 2 = nur Zahl 
    Set Regex = CreateObject("VBScript.RegExp")
    With Regex
        .IgnoreCase = False
        .MultiLine = True
        .Pattern = "\w{1,50} \d{1,10}"
        .Global = True
         Set oMatch = .Execute(rZelle.Text)
    
    
        If oMatch.Count > 0 Then
            If byParameter = 1 Then
                .Pattern = "\d"
                NameAndZahl = Trim(.Replace(oMatch(0).Value, ""))
            ElseIf byParameter = 2 Then
                .Pattern = "\D"
                NameAndZahl = Trim(.Replace(oMatch(0).Value, "")) * 1
            Else
                NameAndZahl = oMatch(0).Value
            End If
        End If
    
    End With
    End Function
    
    In der Zelle
     ABCD
    1 AllesNur TextNur Zahl
    2Büro ABC Hamburg 1256 zu HauseHamburg 1256Hamburg1256
    3Büro Berlin 12345 in Straße XXXBerlin 12345Berlin12345

    Formeln der Tabelle
    ZelleFormel
    B2=NameAndZahl(A2)
    C2=NameAndZahl(A2;1)
    D2=NameAndZahl(A2;2)
    B3=NameAndZahl(A3)
    C3=NameAndZahl(A3;1)
    D3=NameAndZahl(A3;2)

    Gruß Tino
    Anzeige
    AW: könnte so funktionieren.
    17.09.2009 19:56:40
    Lemmi
    Hallo Tino,
    Code funktioniert prima! Danke Tino!
    Wenn ich nun kein Wert ermittel wird in A1 wird immer eine 0 ausgageben!
    Dies habe ich versucht mit
    =WENN(A2="";"";NameAndZahl(A2)) zu beseitigen klappt leider nicht!
    Kannst Du noch einmal Hand anlegen?
    Mein Wunsch währe es wenn in der Zelle A1 kein Wert vorhanden ist, auch keine Wert anzuzeigen!
    Gruß
    Lemmi
    =WENN(A1="";"";NameAndZahl(A1)) owT
    17.09.2009 20:05:51
    bernd
    AW: könnte so funktionieren.
    17.09.2009 20:20:59
    Tino
    Hallo,
    teste mal.
    Function NameAndZahl(rZelle As Range, Optional byParameter As Byte = 0) As Variant
    Dim Regex As Object, oMatch As Object
    
    
    If Not rZelle.Value Like "*? [0-9]*" Then
     NameAndZahl = "": Exit Function
    End If
    
    'byParameter  0 = alle, 1 = nur Text , 2 = nur Zahl 
    Set Regex = CreateObject("VBScript.RegExp")
    With Regex
        .IgnoreCase = False
        .MultiLine = True
        .Pattern = "[\w|äöüßÄÖÜ]{1,50} \d{1,10}"
        .Global = True
         Set oMatch = .Execute(rZelle.Text)
    
    
        If oMatch.Count > 0 Then
            If byParameter = 1 Then
                .Pattern = "\d"
                NameAndZahl = Trim(.Replace(oMatch(0).Value, ""))
            ElseIf byParameter = 2 Then
                .Pattern = "\D"
                NameAndZahl = Trim(.Replace(oMatch(0).Value, "")) * 1
            Else
                NameAndZahl = oMatch(0).Value
            End If
        Else
           NameAndZahl = ""
        End If
    
    End With
    End Function
    
    Gruß Tino
    Anzeige
    AW: könnte so funktionieren.
    18.09.2009 10:24:27
    Lemmi
    Hallo Tino,
    das macht richtig Spaß! alles bestens!
    Vielen Dank!
    Gruß
    Lemmi
    danke für die Rückmeldung oT.
    18.09.2009 11:33:38
    Tino

    397 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige