Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Funktion Zahlenwert in VBA

Funktion Zahlenwert in VBA
27.07.2021 21:01:38
M@tt
Hallo ins Forum,
ich habe eine Frage zur Funktion Zahlenwert. Ich möchte einen Wert, eingefügt aus einer CSV-Datei, der als Dezimalzeichen einen Punkt hat, den Punkt durch Komma ersetzen. Das funktioniert mit der Excelfunktion problemlos, leider gelingt es mir mit VBA nicht, da ich die Einfügeposition über letzte Zeile ermittle. Seht bitte meinen Beispielcode, wo es eingefügt werden soll. Danke für Eure Zeit
https://www.herber.de/bbs/user/147338.xlsm
Gruß M@tt
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion Zahlenwert in VBA
27.07.2021 21:33:36
PeTeR
Hallo M@tt,
der VBA-Befehl lautet:
Cells(letzteZeile, 2).Value = WorksheetFunction.NumberValue(Cells(letzteZeile, 1).Value, ".", ";")
Viel Erfolg
PeTeR
AW: Funktion Zahlenwert in VBA
27.07.2021 21:44:20
M@tt
Hallo Peter,
Vielen Dank es funktioniert einwandfrei ;-). Ich mußte in meinem Beispiel nur auf die erste Spalte umstellen.
Vielen Dank für die schnelle Hilfe, dann kann es ja weiter gehen.
Gruß M@tt
Schönen Abend
Anzeige
SystemSeparators
28.07.2021 15:28:36
Yal
Moin!
grundsätzlich verwendet ein Excel, das auf einem Windows in deutscher Sprache installiert, die Komma als Dezimal- und der Punkt als Tausender-Trennzeichen.
Man kann aber in "Optionen", "Erweitert" einstellen, dass Excel nicht die System-Einstellung sondern eine andere verwendet. Wenn diese andere auf punkt+Komma anstatt Komma+Punkt, dann wird deine Datei einwandfrei geladen und ist wesentlich schenller als die Transformation Zelle für Zelle.
VBA gesteuert musst Du nur noch sagen: System-Standard nicht verwenden, Datei laden, System-Standard wieder einstellen.
Sieht dann so aus (ich hatte keine Datei zu laden):

Sub Makro2()
Application.UseSystemSeparators = False
'hier Datei laden
Application.UseSystemSeparators = True
End Sub
VG
Yal
Anzeige
AW: SystemSeparators
28.07.2021 16:19:41
m@tt
Hallo Yal,
vielen Dank auch an Dich. Für mich ist die Lösung erstmal in Ordnung, da es sich um nur wenige Werte handelt, aber ich werde mir Deinen Vorschlag für später archivieren. Gruß M@tt
AW: Funktion Zahlenwert in VBA
29.07.2021 16:07:20
Daniel
Hi
wie liest du denn die CSV-Datei ein?
wenn du sie importierst, kannst du im Importassistenten im Schritt 3 einstellen, in welchem Format die Zahlen in der CSV vorliegen (Komma oder Punkt getrennt). Wenn du da das passende einstellst, müssten die Zahlen richtig in Excel ankommen.
Um an diese Einstellung zu kommen, musst du im Schritt 3 den Button WEITERE... klicken.
wenn du die Daten anders bekommst, kannst du die Umwandlung auch so durchführen, indem du den Punkt mit ERSETZEN durch das Komma austauschst. Wenn du das machst, wird Excel den neuen Wert erneut prüfen und ggf in eine Zahl wandeln.
das geht auch per VBA am einfachsten. Hierbei musst du allerdings den Punkt durch den Punkt ersetzen.
klingt unlogisch, aber wenn du das in VBA machst, wendet Excel für die Wandlung von Text nach Zahl immer die amerikanischen Formate an, egal welche Ländereinstellung dein Excel hat.
als VBA also am einfachsten: Columns(1).Replace ".", ".", xlpart
alternativ kannst du auch die Menüfunktion DATEN - DATENTOOLS - TEXT IN SPALTEN auf die Spalte anwenden und hierbei, wie beim Import beschrieben im Schritt 3 des Assistenten unter WEITER... einstellen, dass der Punkt das Dezimalzeichen sein soll.
auch das geht per Makro, verwende bitte den Recorder.
Gruß Daniel
Anzeige
;

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
Anzeige

Infobox / Tutorial

Funktion Zahlenwert in VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und stelle sicher, dass die Daten, die du importieren möchtest, in einer CSV-Datei gespeichert sind.

  2. Importiere die CSV-Datei über den Menüpunkt "Daten" > "Abrufen und Transformieren" > "Aus Text/CSV". Achte darauf, im Importassistenten den richtigen Dezimaltrenner auszuwählen.

  3. Füge den VBA-Code ein, um die Zahlenwerte korrekt zu verarbeiten. Du kannst den folgenden Code verwenden, um den Punkt durch ein Komma zu ersetzen:

    Sub ConvertCSVValues()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
       Cells(letzteZeile, 2).Value = WorksheetFunction.NumberValue(Cells(letzteZeile, 1).Value, ".", ";")
    End Sub
  4. Führe das Makro aus, um die Konvertierung durchzuführen. Das Ergebnis wird in der zweiten Spalte angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung"
    Lösung: Stelle sicher, dass die Zellen, die du verarbeitest, tatsächlich numerische Werte enthalten und nicht nur Text.

  • Fehler: Werte werden nicht korrekt konvertiert
    Lösung: Überprüfe, ob die System-Trennzeichen in Excel korrekt eingestellt sind. Du kannst in den Optionen unter „Erweitert“ die Systemtrennzeichen anpassen.


Alternative Methoden

  • Verwendung der Excel-Funktion: Anstatt VBA zu nutzen, kannst du auch die Excel-Formel =Zahlwert(A1) verwenden, um den Text in eine Zahl umzuwandeln.

  • Daten in Spalten aufteilen: Eine weitere Methode ist die Verwendung der Funktion „Text in Spalten“, die du unter „Daten“ findest. Hier kannst du die Trennzeichen anpassen und die Werte korrekt formatieren.


Praktische Beispiele

  • Angenommen, deine CSV-Datei enthält die Zahl 1234.56. Nach dem Import und der Anwendung der Funktion numbervalue vba wird dieser Wert in Excel als 1234,56 dargestellt.

  • Ein Beispiel für die Transformation einer gesamten Spalte in VBA könnte so aussehen:

    Sub ReplaceDecimalSeparator()
       Columns(1).Replace ".", ",", xlPart
    End Sub

Tipps für Profis

  • VBA oder Funktion: Überlege, ob du die Umwandlung lieber mit einer Excel-Formel oder direkt über VBA durchführen möchtest. Bei größeren Datenmengen ist VBA oft schneller.

  • Speichere deine Makros: Wenn du häufig mit CSV-Dateien arbeitest, speichere deine VBA-Skripte in einem persönlichen Makroarbeitsbuch, damit du sie schnell wieder verwenden kannst.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine CSV-Datei korrekt importiert wird?
Achte darauf, im Importassistenten das richtige Dezimalzeichen auszuwählen und die Spaltenformate korrekt zu definieren.

2. Gibt es eine Möglichkeit, die Umwandlung ohne VBA durchzuführen?
Ja, du kannst die Excel-Funktion =Zahlwert() oder die Funktion „Text in Spalten“ nutzen, um die Werte zu konvertieren.

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