Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahl im String finden (VBA)

Zahl im String finden (VBA)
chris
Hallo VBA experten,
ich habe ein kniffliges Problem bei dem ich Hilfe benötige.
Ich habe einen Text mit zahl in einer zelle.
z.b "test time 33"
Wenn in der zelle ein Inhalt ist ist nach dem text immer ein zeilenumbruch also chr(10)
Jetzt möchte ich gerne prüfen
if (zahl im string) = 33 then ...
ich könnte zwar z.b if instr(string,33) verwenden aber da bekomme ich dannz.b bei der zahl 133 weil ja die 33 auch vorhanden ist.
Weiß jemand eine Lösung für mich ?
Vielen Dank im voraus für die Hilfe.
Anzeige
AW: Zahl im String finden (VBA)
15.09.2010 15:37:38
Dirk
Hallo!
Falls vor Deiner Zahl immer ein Leerzeichen ist koenntest Du dieses bei instr mit einbinden z.B. instr(string, " 33")
Gruss
Dirk aus Dubai
AW: Zahl im String finden (VBA)
15.09.2010 15:39:05
chris
Nein ist es aber leider nicht.
Schon mal danke trotzdem für die Antwort
AW: Zahl im String finden (VBA)
15.09.2010 15:43:31
Sobotta
Hallo chris,
versuch doch mal InStr(sring, vbLf)
bei mir funktioniert das.
Gruß
Anzeige
AW: Zahl im String finden (VBA)
15.09.2010 15:53:18
chris
Sorry aber was soll ich damit ?
damit finde ich nur den zeilenumbruch und nicht die zahl ?
Danke für weitere Hilfe
AW: Zahl im String finden (VBA)
15.09.2010 16:01:48
Nepumuk
Hallo,
na dann halt so:
If Cbool(InStr(DeinString, vbLf & "33")) Then

Gruß
Nepumuk
Anzeige
AW: Zahl im String finden (VBA)
16.09.2010 07:03:58
chris
Hmm Vielen Dank.
Aber das mit der 33 war nur ein beispiel Nepumuk:)
Es handelt sich immer um andere zahlen.
ich will immer rausfinden welche Zahl in einem String steckt,
AW: Zahl im String finden (VBA)
15.09.2010 15:53:28
ChrisL
Hi Chris
Oder so...
Sub t()
Dim strTest As String
strTest = "text text 133"
MsgBox ExtractNumber(strTest)
End Sub
Private Function ExtractNumber(str As String) As Long
Dim i As Byte, ii As Byte
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then Exit For
Next i
For ii = i To Len(str)
If Not IsNumeric(Mid(str, ii, 1)) Then Exit For
Next ii
ExtractNumber = Mid(str, i, Len(str) - (ii - i))
End Function

cu
Chris
Anzeige
AW: fast perfekt
16.09.2010 07:08:25
chris
Hey Chris.Super genau das wollte ich :)
Wirklich super Dein code.
Aber gibt es noch die möglichkeit die erste oder letzte Zahl herauszufiltern ?
Aktuell kommt bei deinem Code ein fehler wenn im String 2 zahlen stecken Also ich meine so.
String = "hdsfjkahsd33dkn22"
Dann kommt ein Fehler.
Gibt es die möglichkeit zu sagen mann will nur die erste zahl also 33 oder die letzte Zahl 22 ?
Dann wäre ich glücklich :)
Danke im voraus ! An alle noch einmal
Anzeige
AW: fertig geschlossen
16.09.2010 07:51:51
chris
Hallo chris,
ich habe mir selbst was gebastelt.Schliese diesen Beitrag sonst macht sich noch jemand unnötig einen Kopf.
Ich lese die zahl nach dem zeilenumbruch einfach ein.
Mach das so.
Function Funct_NUR_Zahl_Alt_Auslesen(alt_Inhalt)
Dim WoUmbruchstart As Integer
Dim LaengeString As Integer
Dim LaengeZahl As Integer
LaengeString = Len(alt_Inhalt)
WoUmbruchstart = InStr(1, alt_Inhalt, Chr(10))
LaengeZahl = LaengeString - WoUmbruchstart
Funct_NUR_Zahl_Alt_Auslesen = Right(alt_Inhalt, LaengeZahl)
End Function

Anzeige
Trotzdem noch eine Möglichkeit
16.09.2010 08:42:31
JogyB
Hallo Chris,
trotzdem noch eine Möglichkeit, wie sich das sehr flexibel lösen lässt:
' Liest Zahlen aus einem String heraus
' matchNr gibt an, welcher Treffer ausgelesen werden soll
Function getZahl(ByVal myStr As String, Optional ByVal matchNr As Integer = 1)
Dim regEx As Object
Dim Matches As Object
' 

Gruß, Jogy
Anzeige
AW: Trotzdem noch eine Möglichkeit
16.09.2010 08:53:50
chris
Cool Super danke
Schönen Tag noch !
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zahl im String finden mit VBA


Schritt-für-Schritt-Anleitung

Um eine Zahl in einem String zu finden und zu extrahieren, kannst Du die folgende Methode in VBA verwenden:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Private Function ExtractNumber(str As String) As Long
       Dim i As Byte, ii As Byte
       For i = 1 To Len(str)
           If IsNumeric(Mid(str, i, 1)) Then Exit For
       Next i
       For ii = i To Len(str)
           If Not IsNumeric(Mid(str, ii, 1)) Then Exit For
       Next ii
       ExtractNumber = Mid(str, i, Len(str) - (ii - i))
    End Function
  4. Nutze die Funktion in einem anderen Sub oder direkt in einer Zelle, um die Zahl aus einem String zu extrahieren:

    Sub Test()
       Dim result As Long
       result = ExtractNumber("text text 133")
       MsgBox result ' Gibt 133 aus
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Keine Zahl gefunden
    Lösung: Stelle sicher, dass die Zahl im String korrekt geschrieben ist und von anderen Zeichen umgeben ist.

  • Fehler: Mehrere Zahlen im String
    Lösung: Passe die Funktion an, um die erste oder letzte Zahl zu extrahieren. Hier ist ein Beispiel für die letzte Zahl:

    Private Function ExtractLastNumber(myStr As String) As Long
      Dim regex As Object
      Set regex = CreateObject("VBScript.RegExp")
      regex.Global = True
      regex.Pattern = "\d+"
      If regex.Test(myStr) Then
          Dim matches As Object
          Set matches = regex.Execute(myStr)
          ExtractLastNumber = CLng(matches(matches.Count - 1).Value)
      Else
          ExtractLastNumber = 0
      End If
    End Function

Alternative Methoden

Eine alternative Methode zur Verwendung von regulären Ausdrücken könnte sein, um die Zahl in einem String zu finden. Hier ist ein Beispiel:

Function GetNumberFromString(myStr As String) As Long
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = "\d+"
    regEx.Global = True
    Dim matches As Object
    Set matches = regEx.Execute(myStr)
    If matches.Count > 0 Then
        GetNumberFromString = CLng(matches(0).Value) ' Gibt die erste gefundene Zahl zurück
    Else
        GetNumberFromString = 0
    End If
End Function

Praktische Beispiele

Hier sind einige praktische Beispiele zur Anwendung der Funktionen:

  • Beispiel 1: Erste Zahl finden

    Sub Example1()
      MsgBox ExtractNumber("Das ist ein Test 42 und 84") ' Gibt 42 aus
    End Sub
  • Beispiel 2: Letzte Zahl finden

    Sub Example2()
      MsgBox ExtractLastNumber("Das ist 20 und dann 30") ' Gibt 30 aus
    End Sub
  • Beispiel 3: Alle Zahlen extrahieren

    Sub Example3()
      Dim myString As String
      myString = "Die Zahlen sind 10, 20 und 30"
      Dim result As Long
      result = GetNumberFromString(myString)
      MsgBox result ' Gibt 10 aus
    End Sub

Tipps für Profis

  • Verwende InStr: Wenn Du in Strings suchen möchtest, nutze InStr oder InStrRev, um die Position von Zeichen zu finden und deine Zahl zu extrahieren.
  • Reguläre Ausdrücke: Für komplexere Anforderungen sind reguläre Ausdrücke (RegExp) sehr mächtig, um Muster in Strings zu finden.
  • String-Datenbanken: Erstelle eine Datenbank, um häufig verwendete Strings zu speichern und einfach darauf zugreifen zu können.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob ein String eine Zahl enthält?
Verwende die Funktion IsNumeric, um zu überprüfen, ob ein Teil des Strings eine Zahl ist.

2. Kann ich mehrere Zahlen aus einem String extrahieren?
Ja, mit regulären Ausdrücken kannst Du alle Zahlen im String finden und extrahieren.

3. Welche Excel-Version benötige ich für VBA?
VBA ist in Excel ab der Version 97 verfügbar. Stelle sicher, dass Du Zugriff auf den VBA-Editor hast.

4. Wie benutze ich die Funktion in einer Excel-Zelle?
Du kannst die Funktion einfach in einer Zelle aufrufen, wie jede andere Excel-Funktion auch.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige