Thema Datum  Von Nutzer Rating
Antwort
29.11.2023 08:58:51 Tylo
NotSolved
29.11.2023 11:10:26 Gast01233
NotSolved
29.11.2023 11:39:12 Tylo
NotSolved
Blau replace with verwirrt mich
29.11.2023 19:52:18 Zwenn
NotSolved
30.11.2023 10:44:11 Tylo
NotSolved
30.11.2023 11:19:23 Zwenn
Solved
30.11.2023 12:30:35 Tylo
NotSolved
01.12.2023 11:48:29 Gast16332
Solved
04.12.2023 07:41:21 Tylo
NotSolved
04.12.2023 07:54:51 Tylo
NotSolved

Ansicht des Beitrags:
Von:
Zwenn
Datum:
29.11.2023 19:52:18
Views:
152
Rating: Antwort:
  Ja
Thema:
replace with verwirrt mich

Hallo Tylo

Replace() kann pro Anwendung nur auf eine Zelle angewendet werden. Wenn Du mehrere Zellen durchlaufen willst, musst Du eine Schleife verwenden. Du brauchst auch nicht den super ausführlichen Aufbau von Replace und Du kannst beide Ersetzungen einfach verschachteln. Zusätzlich muss das Ergebnis der Ersetzung aktiv in den Datentyp Double gecastet werden. Sonst überlässt Du Excel ds Interpretieren des Ergebnisses. Nie eine gute Idee.

Hier kannst Du nachsehen, was es mit dem Typecast auf sich hat:
https://learn.microsoft.com/de-de/office/vba/language/concepts/getting-started/type-conversion-functions

Hier ist ein funktionierendes Makro für Dein Anliegen:

Sub ReplaceAsNumber()
    Dim ws As Worksheet 'Um mit With ... End With zu arbeiten
    Dim currRow As Long 'Wird als aktuelle Zeile verwendet, um alle Zellen einer Spalte durchzugehen
    Dim currCol         'Als aktuelle Spalte setzen, in der gearbeitet wird
    
    Set ws = ActiveWorkbook.ActiveSheet 'Vorbereitung With ... End With
    currCol = 11 'Spalte K
    
    With ws
        'Alle Zeilen der gesetzten Spalte durchgehen.
        For currRow = 1 To .Cells(.Rows.Count, currCol).End(xlUp).Row
            'Das m und den . ersetzen. Um eine Fließkommazahl zu erhalten, muss der entstehende
            'String zum Datentyp Double konvertiert werden, sonst interpretiert Excel munter
            'drauf los und bei 3, 6, 9 ... Stellen hinter dem Komma/ Punkt wird der entstehende
            'Wert als Dezimalzahl interpretiert, wobei jede dritte Stelle durch den Dezimaltrenner
            'markiert wird. Das geht alles in einer Zeile, wobei der resultierende Wert in die
            'Zelle zurückgeschrieben wird.
            .Cells(currRow, currCol) = CDbl(Replace(Replace(.Cells(currRow, currCol), "m", ""), ".", ","))
        Next currRow
    End With
End Sub

Viele Grüße,

Zwenn


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
29.11.2023 08:58:51 Tylo
NotSolved
29.11.2023 11:10:26 Gast01233
NotSolved
29.11.2023 11:39:12 Tylo
NotSolved
Blau replace with verwirrt mich
29.11.2023 19:52:18 Zwenn
NotSolved
30.11.2023 10:44:11 Tylo
NotSolved
30.11.2023 11:19:23 Zwenn
Solved
30.11.2023 12:30:35 Tylo
NotSolved
01.12.2023 11:48:29 Gast16332
Solved
04.12.2023 07:41:21 Tylo
NotSolved
04.12.2023 07:54:51 Tylo
NotSolved