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

Forumthread: 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)

    Anzeige

    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.

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

    Forumthreads zu verwandten Themen

    Anzeige
    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige

    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