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

Textzahl in Zahl umwandeln

Textzahl in Zahl umwandeln
20.09.2013 18:08:38
Dieter(Drummer)
Liebe VBA Spezialisten,
in einer Spalte steht z.B. 650.54kg. Dies ist Text und soll in eine Zahl umgewandelt werden. Statt "kg" kann auch "mm" stehen. Kann man das Makro so anpassen, dass die Zellen, die umgewndelt werden sollen vorher markiert und abgefragt wird, ob das anschließende Bebutzer definierte Format Standard "mm" oder Standard "kg" haben soll. Mit meienm Makro wird der Punkt in ein Komma gewandelt un mm oder KG entfernt, Dann wird das entsprechende Benutzer definierte Format auf Standard "mm" oder Standar "kg" gesetzt. Hier habe ich mein Muster Makro mit Rekorder:
  • 
    Sub kg_TextInZahl()
    ActiveCell.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.Find(What:=".", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
    Range("V3").Select
    ActiveCell.Replace What:="kg", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    Cells.Find(What:="kg", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
    Range("V3").Select
    Selection.NumberFormat = "General ""kg"""
    End Sub
    

  • Freue auf jede Hilfe.
    Gruß, Dieter(Drummer)

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    Text in Zahl umwandeln
    20.09.2013 21:19:44
    Erich
    Hi Dieter,
    das könnte man - ohne Rückfrage beim User - vielleicht auch anders erledigen.
    Hier wird Spalte C aus Spalte B:
     BC
    2650.54kg650,54 kg
    3650.54 kg650,54 kg
    4Weckglas GmbH & Co. KGWeclas GmbH & Co. KG
    5456.789mm456,789 mm
    6456mm456 mm
    7immer 456.789 mmier 456.789
    8KommaKoa

    Das Format der Zelle wird auf Standard kg oder Standard mm gesetzt, wenn der entsprechende Text vorkommt.
    Hier die Prozedur dazu - wobei ich zum Testen die zweite Version verwenden würde,
    da sie die Ausgangswerte nicht überschreibt:
    
    Option Explicit
    Sub TextInZahl_mm_kg()
    Dim arT, arr, zz As Long, cc As Long, ii As Long
    Dim rngF() As Range
    arT = Split("mm kg")
    ReDim rngF(0 To UBound(arT))
    With Selection
    arr = .Value
    If Not IsArray(arr) Then
    ReDim arr(1 To 1, 1 To 1)
    arr(1, 1) = .Value
    End If
    For zz = 1 To UBound(arr)
    For cc = 1 To UBound(arr, 2)
    For ii = 0 To UBound(arT)
    If InStr(arr(zz, cc), arT(ii)) Then
    arr(zz, cc) = Replace(arr(zz, cc), arT(ii), "")
    If rngF(ii) Is Nothing Then
    Set rngF(ii) = .Cells(zz, cc)
    Else
    Set rngF(ii) = Union(rngF(ii), .Cells(zz, cc))
    End If
    Exit For
    End If
    Next ii
    Next cc
    Next zz
    For ii = 0 To UBound(arT)
    If Not rngF(ii) Is Nothing Then _
    rngF(ii).NumberFormat = "General """ & arT(ii) & """"
    Next ii
    .Value = arr
    End With
    End Sub
    Sub TextInZahl_mm_kg_Test()  ' zum Testen Ausgabe in der nächsten Spalte
    Dim arT, arr, zz As Long, cc As Long, ii As Long
    Dim rngF() As Range
    arT = Split("mm kg")
    ReDim rngF(0 To UBound(arT))
    With Selection
    arr = .Value
    If Not IsArray(arr) Then
    ReDim arr(1 To 1, 1 To 1)
    arr(1, 1) = .Value
    End If
    For zz = 1 To UBound(arr)
    For cc = 1 To UBound(arr, 2)
    For ii = 0 To UBound(arT)
    If InStr(arr(zz, cc), arT(ii)) Then
    arr(zz, cc) = Replace(arr(zz, cc), arT(ii), "")
    If rngF(ii) Is Nothing Then
    Set rngF(ii) = .Cells(zz, cc + 1)
    Else
    Set rngF(ii) = Union(rngF(ii), .Cells(zz, cc + 1))
    End If
    Exit For
    End If
    Next ii
    Next cc
    Next zz
    For ii = 0 To UBound(arT)
    If Not rngF(ii) Is Nothing Then _
    rngF(ii).NumberFormat = "General """ & arT(ii) & """"
    Next ii
    .Offset(, 1).Value = arr
    End With
    End Sub
    
    Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

    Anzeige
    AW: Text in Zahl umwandeln
    21.09.2013 11:49:09
    Hajo_Zi
    Hallo Erich,
    mal eine Test Antwort, da es lt. diesem Beitrag https://www.herber.de/forum/messages/1331762.html nicht möglich sein soll. Ich habe mal vermutet es geht um diesen Beitrag, da kein Link.

    Danke, Hajo, alles wieder klar! :-) (owT)
    21.09.2013 13:22:55
    Erich

    489 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige