Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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
Inhaltsverzeichnis

Zahlenwerte richtig importieren

Zahlenwerte richtig importieren
26.07.2018 11:43:30
Christoph
Guten Tag,
für ein Vergleichstool von Stücklisten wird der BAuteilpreis mit eingelesen aus einer Tabelle, die automatisiert aus einem CAD Programm erstellt wird. Das Programm legt die Preise als String an ('0.092). Für die Verarbeitung in der Vergleichstabelle soll dieser String nun in eine Zahl umgewandelt werden. Da bei mir und bei unserem Kunden scheinbar unterschiedliche Regionaleinstellungen was Dezimaltrennzeichen etc. eingestellt sind, läuft das Makro bei mir einwandfrei durch, beim Kunden werden allerdings die Dezimalzeichen bei der Berechnung der Preisdifferenz verschluckt. (Siehe Bild)
Userbild
Um Mit den "String Werten" richtig rechnen zu können und unabhängig von eingestellten Dezimalzeichen zu werden habe ich für die Berechnung einen expliziten Typecast mit CDbl vorgenommen, da dieser bei der Umwandlung zu Double das eingestellte Regionalschema berücksichtigt (laut MSDN).
Allerdings führt dieser zu der oben gezeigten Ausgabe.
Gibt es zu dem Typecast noch Alternativen?
Quote1 = CDbl(.Cells(HelpingPointer + FirstRowData + 1, LastColumnData + 8))
Quote2 = CDbl(.Cells(HelpingPointer + FirstRowData + 1, LastColumnData + 4))
QuoteResult = Quote1 - Quote2
.Cells(HelpingPointer + FirstRowData + 1, LastColumnData + 10) = QuoteResult

Vielen Dank
Christoph

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ich sehe keinen Unterschied!
26.07.2018 13:06:11
PeterK
AW: Ich sehe keinen Unterschied!
26.07.2018 13:09:42
Christoph
Hallo Peter,
ganz rechts in dem Bild (leider etwas zu breit geraten für die Standardansicht) wird falsch gerechnet. Statt 0,180-0,092 wird 18-92 gerechnet.
AW: Ich sehe keinen Unterschied!
26.07.2018 13:24:27
PeterK
Hallo
Ich vermute, daß bereits beim einlesen der CAD Datei der Fehler passiert, d.h. Excel versucht die String-Zahl als Zahl zu interpretieren und je nach Einstellung "gelingt" es. Wenn Du die CAD Datei mittels eines Macros importierst könntest Du ja kurzfristig die "Trennzeichen" so setzen, wie Du es brauchtst.
AW: Ich sehe keinen Unterschied!
26.07.2018 13:34:21
Christoph
Hallo,
an dem Export aus dem CAD System kann ich nichts ändern. Das ist eine Funktion des Systems. Diese Ausgabe mit liefert nur Strings, da die Datenbank hinter dem CAD auch nur Strings kennt. Die Erkennung als Text in den einzelnen zellen funktioniert unter Excel auch gut, da das CAD in jeder Zelle ein ' voranstellt.
Ich komme erst an die Daten, wenn sie bereits im Excel vorliegen und dann stets mit 'x.xxx formatiert sind. Darum versucht Excel gar nicht erst das Dezimaltrennzeichen zu verändern.
Anzeige
AW: Replace() ?
26.07.2018 13:38:54
Fennek
Hallo,
da am Anfang ein String steht, kann man das DezimalTrennzeichen mit Replace() in die für das spezifische Land benötigte Zeichen wandeln.
mfg
(VBA ist immer englisch)
AW: Replace() ?
26.07.2018 14:10:10
Christoph
Hallo Fennek,
das mit der Replace Funktion war ein guter Tipp. Es funktioniert zwar noch nicht ganz, aber jetzt kann ich den Fehler des Kunden nachstellen.
Es kann nur besser werden...
Vielen Dank. ICh glaube von hier aus schaff ich den Rest.
Grüße
AW: Ich sehe keinen Unterschied!
26.07.2018 14:25:29
Daniel
Hi
die Umwandlungsfunktion CDbl verwendet die jeweilige Ländereinstellung des PCs
In einem Deutschen Excel ist der Punkt das Tausendertrennzeichen, dh "'0.092" wird 92.
In einem Englischen Excel ist der Punkt das Dezimalzeichen, dh "'0.092" wird 0,092 (92/1000)
Wenn die Zahl im englischen Format steht, verwende VAL() statt CDbl().
mit VAL findet immer die amerikanische Schreibweise Anwendung, unabhängig von der Ländereinstellung des PCs
Quote1 = VAL(.Cells(HelpingPointer + FirstRowData + 1, LastColumnData + 8))
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige