paula: Excel: suche nach Zahl in Textzelle

Hallo,
vielleicht kann mir jemand weiterhelfen. Ich finde keine Lösung.

Ich habe eine Excel-Spalte im Textformat mit allen R-(Risiko)-Sätzen für Gefahrstoffe,wie folgt angegeben:

R51/53: R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment.

Ich möchte nun in einer anderen Spalte lediglich die Zahl ausgeben, dh am Beispiel oben. 51/53.

Hat jemand eine Idee?

Vielen Dank!

  1. Mahlzeit paula,

    R51/53: R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment.

    Unsauber. Eine Spalte mit dem Inhalt "R51/53" und eine Spalte daneben mit dem Inhalt "R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment." geht nicht?

    Ich möchte nun in einer anderen Spalte lediglich die Zahl ausgeben, dh am Beispiel oben. 51/53.

    Wenn ALLE Zellen IMMER mit Text mit dem Muster "R??/??: " beginnen, kannst Du das recht einfach entweder mit einem regulären Ausdrücken oder einigen Stringoperationen herausbasteln.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo Ekki,
      habe eine Liste mit bestimmten Chemikalien, denen in der angrenzenden Spalte (im Textformat) jene R-Sätze zugeordnet sind. Leider gibt es auch oftmals MEHRERE R-Sätze pro Chemikalie. Das sieht dann in der angrenzenden Zelle zum Beispiel so aus.

      R36/38: R36/38 Irritating to eyes and skin.;R51/53: R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment.

      Diese Angaben stehen so in EINER Zelle.
      Ich kann also nicht pauschal zB mittels ERSETZEN-Funktion die ersten Stellen herausfiltern und den Rest löschen. Da es knapp 60 R-Sätze gibt, kann ich auch keine (einfache) WENN-Funktion verwenden...

      "Zu Fuß" möchte ich den Textanhang nicht löschen, da ich diese Liste in regelmäßigen Abständen aus einer Datenbank regenerieren muss.

      ?

      Schöne Grüße erstmal

      Mahlzeit paula,

      R51/53: R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment.

      Unsauber. Eine Spalte mit dem Inhalt "R51/53" und eine Spalte daneben mit dem Inhalt "R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment." geht nicht?

      Ich möchte nun in einer anderen Spalte lediglich die Zahl ausgeben, dh am Beispiel oben. 51/53.

      Wenn ALLE Zellen IMMER mit Text mit dem Muster "R??/??: " beginnen, kannst Du das recht einfach entweder mit einem regulären Ausdrücken oder einigen Stringoperationen herausbasteln.

      MfG,
      EKKi

      1. Hallo paula,

        R36/38: R36/38 Irritating to eyes and skin.;R51/53: R51/53 Toxic to aquatic organisms, may cause long-term adverse effects in the aquatic environment.

        Diese Angaben stehen so in EINER Zelle.

        hier ist eine von vielen Möglichkeiten per VBA:

        Sub Aufteilen()  
        Dim lngZ As Long, lngLZ As Long  
        Dim intS As Integer  
        Dim strText As String, strTemp As String  
        Dim arrTemp  
          
        'Letzte ausgefüllte Zelle in Spalte 1 suchen:  
        lngLZ = Cells(Rows.Count, 1).End(xlUp).Row  
          
        'Von Zeile 2 bis zur letzten ausgefüllten Zelle in Spalte A durchlaufen:  
        For lngZ = 2 To lngLZ  
            strText = Cells(lngZ, 1)  
          
            'Wenn ein Doppelpunkt enthalten ist:  
            If InStr(1, strText, ": ") > 0 Then  
          
                If InStr(1, strText, ".;") = 0 Then  
                    'Wenn nur ein Satz enthalten ist:  
                    Cells(lngZ, 2) = R_Extract(strText)  
                Else  
                    'Bei mehreren Sätzen:  
                    arrTemp = Split(strText, ".;")  
          
                    strTemp = ""  
                    For intS = 0 To UBound(arrTemp)  
                        If intS = 0 Then  
                            strTemp = R_Extract(arrTemp(intS))  
                        Else  
                            strTemp = strTemp & ";" & R_Extract(arrTemp(intS))  
                        End If  
                    Next  
                    Cells(lngZ, 2) = strTemp  
                End If  
            End If  
        Next  
        End Sub  
          
          
          
        Function R_Extract(ByVal strText As String)  
        Dim arrTemp  
        R_Extract = ""  
        If strText = "" Then Exit Function  
        If InStr(1, strText, ":") = 0 Then Exit Function  
          
        arrTemp = Split(strText, ": ")  
          
        R_Extract = arrTemp(0)  
        End Function
        

        Viele Grüße

        Jörg

        1. Hallo Jörg,
          DANKE DANKE DANKE DANKE!! Dein Makro funktioniert super! Es ist eine große Hilfe. Ich habe es bereits abgewandelt für eine ähnliche Fragestellung im Einsatz.

          Schöne Grüße

          1. Hallo paula,

            DANKE DANKE DANKE DANKE!! Dein Makro funktioniert super! Es ist eine große Hilfe. Ich habe es bereits abgewandelt für eine ähnliche Fragestellung im Einsatz.

            schön, das freut mich.

            Nur noch ein kleiner Tipp: Bitte beim nächsten Mal die Excel-Version angeben, denn das läuft erst ab 2000. Darunter müsste eine Fehlermeldung kommen.

            Schönes Wochenende

            Jörg