Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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
Nur Zahl aus String
17.03.2009 12:59:01
Dirk
Hallo Excelforum,
ich brauche (mal wieder) eure Hilfe!
Ich muss einen String in einer Zelle umwandeln.
folgendes kann in der Zelle stehen:
Grundzeit: 0,1754 Minuten
Die Anzahl der Leerzeichen kann dabei variieren.
Mit folgendem Code schaffe ich es zumindestens "0,1754 Minuten" zu ermitteln:

Sub Test()
Dim Var1 As Variant, I As Byte
Var1 = ActiveCell.Value
For I = 1 To 100
If IsNumeric(Right(Mid((Var1), 1, I), 1)) Then
MsgBox (Right(ActiveCell.Value, I + 2))
Exit Sub
End If
Next
End Sub


Allerdings muss der Text hinter der letzten Zahl auch gelöscht werden.
Leider komme ich nicht darauf wie ich es lösen könnte.
LG
Dirk R.

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur Zahl aus String
17.03.2009 13:03:04
D.Saster
Hallo,
immer 'Grunzeit:' und 'Minuten'?
=GLÄTTEN(WECHSELN(WECHSELN(B12;"Grundzeit:";"");"Minuten";""))*1
Gruß
Dierk
AW: Nur Zahl aus String
17.03.2009 13:06:02
Dirk
Hallo Dierk,
Danke für deine schnelle Antwort, aber ich brauche eine VB Lösung.
Die Schreibweise von Grundzeit und Minuten kann durchaus auch so aussehen:
"G r u n d z e i t :"
Ich muss daher mich auf die Zahl berufen und den Rest löschen.
Aber trotzdem Danke!
LG
Dirk R.
AW: Nur Zahl aus String
17.03.2009 13:13:25
Ramses
Hallo

Sub Test()
    Dim Var1 As Variant, I As Long, tmp As String
    Var1 = ActiveCell.Value
    For I = 1 To Len(Var1)
        If IsNumeric(Mid(Var1, I, 1)) Then
            tmp = Right(ActiveCell.Value, Len(Var1) - (I - 1))
            tmp = Left(tmp, InStr(1, tmp, " "))
            MsgBox "Reine Zeit: " & tmp
            Exit Sub
        End If
    Next I
End Sub

Gruss Rainer
Anzeige
AW: Nur Zahl aus String
17.03.2009 14:04:58
Dirk
Hallo Rainer,
vielen Dank für deine Antwort. Dein Code scheint, nach einem Testlauf, perfekt zu funktionieren.
Danke auch an alle anderen, die sich gemeldet haben, werde eure Vorschläge auch noch testen.
Gruß
Dirk R.
AW: Nur Zahl aus String
17.03.2009 13:15:53
D.Saster
als Ansatz:

Function inZahl(sText As String)
Dim i As Integer
For i = 1 To Len(sText)
If IsNumeric(Mid(sText, i, 1)) Or Mid(sText, i, 1) = "," Then _
inZahl = inZahl & Mid(sText, i, 1)
Next
inZahl = inZahl * 1
End Function


Gruß
Dierk

Das hast du aber nicht getestet,.. gell :-)
17.03.2009 13:19:40
Ramses
Hallo
"," * 1
Da ist EXCEL VBA sehr eigensinnig und stur :-)
Gruss Rainer
Anzeige
AW: Das hast du aber nicht getestet,.. gell :-)
17.03.2009 13:24:12
D.Saster
Hallo,
doch, aber nur mit seinem Beispiel. War ja auch als Ansatz.
Gruß
Dierk
AW: Das hast du aber nicht getestet,.. gell :-)
17.03.2009 13:27:36
Ramses
Hallo
ist das wieder eine Eigenart des deutsch-deutschen Excel's ?
Bei meiner Version rennt EXCEL in einen Fehler bei der Multiplikation. Wenn das Komma gegen einen Punkt ersetzt würde, dann ginge es.
Gruss Rainer
AW: Das hast du aber nicht getestet,.. gell :-)
17.03.2009 13:46:40
D.Saster
Hallo Rainer,
wenn inZahl nur "," oder "." ist, gibt's bei mir (rein deutsches XP) immer einen Fehler bei der Plutimikation.
Gruß
Dierk
oh-ja; ich plutimiere gerade
17.03.2009 13:49:27
Luschi
Gruß von Luschi
aus klein-paris
AW: oh-ja; ich plutimiere gerade
17.03.2009 14:02:14
D.Saster
Hallo Luschi,
kannst du nicht kennen.
Ist aus Pipi Langstrumpf. Die war bei euch in der Dunkel Deutschen Republik bestimmt verboten wg. selbständigem Denken und Freiheitsdrang, obwohl sie rote Haare hat ;-)
Gruß
Dierk
Anzeige
AW: Nur Zahl aus String
17.03.2009 13:30:46
Tino
Hallo,
hier mal eine Version.
Sub InStrZahlen(ByRef strString As String)
Dim Regex As Object
Set Regex = CreateObject("Vbscript.Regexp")
With Regex
    .IgnoreCase = True
    .Pattern = "[\s?a-zäöüß:]"
    .Global = True
     strString = .Replace(strString, "")
End With
Set Regex = Nothing
End Sub

Sub TestNurDieZahl()
Dim strVar1 As String

strVar1 = ActiveCell.Text
InStrZahlen strVar1

If IsNumeric(strVar1) Then
 MsgBox strVar1 * 1
End If

End Sub


Gruß Tino

Anzeige
AW: Nur Zahl aus String
17.03.2009 13:42:38
Tino
Hallo,
noch besser ersetze
.Pattern = "[\s?a-zäöüß:]"
durch
.Pattern = "[^0-9,]"
Gruß Tino
und noch International ;-)
17.03.2009 13:50:45
Tino
Hallo,
um auch die Englische bzw. Deutsche Schreibweise zu beachten, könnte es so gehen.
Sub InStrZahlen(ByRef strString As String)
Dim Regex As Object
Dim KommaOderPunkt As String

KommaOderPunkt = IIf("0.5" * 2 = 1, ".", ",")
Set Regex = CreateObject("Vbscript.Regexp")

With Regex
    .IgnoreCase = True
    .Pattern = "[^0-9,.]"
    .Global = True
     strString = .Replace(strString, "")
    .Pattern = "[.,]"
     strString = .Replace(strString, KommaOderPunkt)
End With
Set Regex = Nothing
End Sub

Sub TestNurDieZahl()
Dim strVar1 As String

strVar1 = ActiveCell.Text
InStrZahlen strVar1

If IsNumeric(strVar1) Then
 MsgBox strVar1 * 1
End If

End Sub


Gruß Tino

Anzeige
AW: Nur Zahl aus String
17.03.2009 17:05:21
Dirk
Hallo Tino,
vielen Dank für deinen Code. Er funzt perfekt
Danke!!!!!!!!!
Gruß
Dirk R.
modifiziert
17.03.2009 18:00:33
Tino
Hallo,
habe mal noch etwas rumexperimentiert.
Kommt im Text auch noch Zahlen vor funzt es nicht
Kommt als Dezimaltrennzeichen der Punkt vor funzt es nicht
Kommen Zahlen ohne Dezimaltrennzeichen vor funzt es auch nicht.
Hier eine Lösung die mit diesen Optionen fertig werden sollte.
Sub InStrZahlen(ByRef strString As String)
Dim Regex As Object, objMatch As Object
Dim KommaOderPunkt As String

KommaOderPunkt = IIf("0.5" * 2 = 1, ".", ",")
Set Regex = CreateObject("Vbscript.Regexp")

With Regex
    .IgnoreCase = True
    .Global = True
    .Pattern = "\d{1,}.\d{1,}"
     
     Set objMatch = .Execute(strString)
     
     If objMatch.Count > 0 Then
      strString = objMatch(0)
      strString = Replace(strString, ",", KommaOderPunkt)
     Else
      strString = ""
     End If
     
End With
Set Regex = Nothing
End Sub

Sub TestNurDieZahl()
Dim strVar1 As String

strVar1 = ActiveCell.Text
InStrZahlen strVar1

If IsNumeric(strVar1) Then
 MsgBox strVar1 * 1
End If

End Sub


Gruß Tino

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige