Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1620to1624
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

Wert in Zahl umwandeln - neues Fallbeispiel

Wert in Zahl umwandeln - neues Fallbeispiel
04.05.2018 11:55:48
Christopher
Guten Tag zusammen,
ich hoffe ihr könnt mir helfen.
Der SAP Auszug zeigt folgende Formel in der Zelle:
="37000000000004384025"
Nun möchte ich final als Zahl in einer anderen Zelle folgendes stehen haben:
37000000000004384025
Folgende Schritten wurden getestet:
1. + 0 gerechnet
2. *1 gerechnet
3. Teilergebnis
Leider alles ohne Erfolg.
Besten Dank für eure Hilfe
Christopher

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert in Zahl umwandeln - neues Fallbeispiel
04.05.2018 12:03:14
Daniel
Hi
folgendes sollte funktionieren (SAP-Auszug steht in A1)
=A1*1
=A1+0
=Wert(A1)
du solltest dies aber nicht tun, denn der Text besteht aus 20 Ziffern.
da Excel nur mit 15 Stellen Genauigkeit rechnet, werden dann die letzten 5 Stellen auf 0 abgerundet.
Gruß Daniel
AW: Wert in Zahl umwandeln - neues Fallbeispiel
04.05.2018 12:16:23
Christopher
Hi Daniel,
besten Dank für die schnelle Antwort.
Genau in der Länge liegt mein Problem. Auch =rechts(A1;20) hilft mir nicht. Sobald ich dies dann als Zahl umwandeln möchte, kommt wieder das Ergebnis: 37000000000004300000
Ich prüfe einmal ob die ersten 13 Ziffern immer gleich sind und ich somit folgenden Schritt machen kann:
=3700000000000 + rechts(a1;7)
Gruß
Chris
Anzeige
Lesen hilft
04.05.2018 12:34:11
lupo1
Daniel hat Dir gesagt, dass das nicht funktioniert.
Hast Du das schon früher als Thema gehabt, mit den Zahlen, die für Excel zu genau waren? Dann hätte man es Dir schon damals begründet. Vielleicht siehst Du es ja jetzt ein.
Excel speichert Zahlen mit doppelter Genauigkeit (DOUBLE). Das entspricht 8 Byte. 8 Byte wiederum sind 64 Bit, und 64 Bit haben 1,8446e+19. Die Hälfte davon sind negativ; die restlichen ~9e+18 vermindern sich noch um die Verwaltung der Verschiebung der Zahl im Zahlenraum, so dass die genauen Ganzzahlen von
-999.999.999.999.999 bis
+999.999.999.999.999 reichen
Schau mal, was hier passiert:
A1: 999.999.999.999.999
A2: 2
A3: =A1+A2
Anzeige
AW: Blatt oder VBA
04.05.2018 12:44:18
Fennek
Hallo,
wenn man den Text per copy/paste in eine Zelle (LibreOffice) einfügt und dann mit tausender Trennzeichen formatiert, werden alle 20 Stellen angezeigt.
Versuche das mal mit xl.
Jetzt fehlt noch die Erklärung der Spezialisten, mit wie vielen Byte xl im Blatt arbeitet.
mfg
Das musst Du aber dann auch zuende testen
04.05.2018 12:49:15
lupo1
Der o.g. Test in LO geht tatsächlich mit
1.000.000.000.000.001 aus, statt falsch in Excel mit 1.000.000.000.000.000.
Hängst Du in A1 jedoch eine 9 an, wird schon A1 auf
10.000.000.000.000.000 geändert.
Das hilft also nix.
AW: Blatt oder VBA
04.05.2018 13:07:26
Daniel
Hi
mal so aus dem Bauch geraten:
die Zahlen in Tabellenblättern sind vom Typ Double, dh 8Byte = 64 Bit stehen maximal zur Verfügung
davon braucht der Exponent (-324 bis 308) schon mal mindestens 10 Bit.
Das Vorzeichen hat 1 Bit.
Bleiben für die Mantisse 53 Bits.
Damit kommst du dann in den Bereich von 15 Stellen.
Gruß Daniel
Anzeige
AW: @Daniel: Frage mit Beispiel
04.05.2018 13:44:39
Fennek
Hallo Daniel,
folgenden Code hatte ich bereits in einem anderen Forum gezeigt/gefragt, aber nur den Hinweis bekommen, dass long 4 Bytes enthält (kannte ich bereits)

Sub myDec2Bin() 'Zahl als STRING >>>>>>>>>>>>>>
Dim Sp As Integer
Dim lngPtr As LongPtr
Dim WSF As WorksheetFunction: Set WSF = Application.WorksheetFunction
Tx = "F4E87569"
Tx = "0011223A" ' im 2. Test auskommentieren ################################################### _
Debug.Print Left(Tx, 8), WSF.Hex2Dec(Left(Tx, 8)), TypeName(WSF.Hex2Dec(Left(Tx, 8)))
lngPtr = VBA.CLngPtr(WSF.Hex2Dec(Left(Tx, 8)))    '>>>>>>>>>
Debug.print lngPtr
End Sub
Die Hex-Zahl in Tx ist zu groß, wird aber im Debug.Fenster (vermutlich) richtig dargestellt, ebenso wie im Arbeitsblatt. Gibt es (verdeckt) das Format "unsigned"?
Danke
mfg
Anzeige
AW: @Daniel: Frage mit Beispiel
04.05.2018 14:27:23
Daniel
naja, ClngPtr ist im Prinzip Datentyp Long, dh nur für Zahlen kleiner als 2^31 (Hex 80000000) geeignet
dein F4E87569 ist größer!
Das Hex2Dec erzeugt einen Text, mit dem hast du ja keine Darstellungsprobleme. Wenn du den Text in eine Zahl wandeln willst, musst du mindestens Typ Double verwenden (oder LongLong auf 64-Bit-Systemen).
Typ Double wird auch von der automatischen Typumwandlung verwendet. WSF.Hex2Dec(Left(Tx, 8))*1
Gruß Daniel
Noch mal ein Text mit 2^20 Zahlen
04.05.2018 15:21:36
lupo1
Test 1:
Frische Datei, xl365
A:A: =ZUFALLSZAHL() plattgemacht
Gespeichert.
Datei - Informationen: 18,2 MB
Dateimanager: 18.690 KB
Das deutet doch eher auf VARIANT (mind. 15 Byte) statt DOUBLE (8 Byte) hin. Aber ich überlasse die Spekulation gern auch jmd., der sich da sicherer wähnt. Bei 2^20 Zeilen könnte z.B. auch ein INDEX ungefragt mitgespeichert sein, da der von den mind. 15 unnötigen Wert-Byte nur 2,5 Byte benötigt. Oder irgendeine andere Info.
----------------
Test 2: 65536 Zeilen, =ZUFALLSZAHL() platt, .xls statt xlsx.: 2,56 MB, 2.630 kB: Hier rutschen wir sogar schon Richtung 40 Byte, umgelegt pro Zelle (im Ggs zu xlsx ist xls als Datei ja unkomprimiert; im RAM sind beide unkomprimiert). Wir erinnern uns, ein leeres .xls hat eine Dateigröße von etwa 14 kb, ein leeres .xlsx etw 8 kb. Irgendetwas wird also in den Testdateien mit aufgebaut.
Anzeige
AW: Variant
04.05.2018 15:43:20
Fennek
Hallo,

dim V as Variant
Tx = "F4E8769"
debug.print cdec("&H" & Tx) ' =-186092183
V = worksheetfunction.Hex2Dec(Tx)
debug.print V, V+1 '4108875114
Der Typ "Variant" kann offensichtlich größere Zahlen als long bzw longPtr aufnehmen. Damit kann dann das Problem "signed", also negative Werte vermieden werden. Ein reiner VBA-Code (ohne Sheet-Cells) ist damit möglich.
Ich ich auch selbst darauf kommen können.
Danke
mfg
Weisst du überhaupt von was du da schwafelst...
04.05.2018 15:55:12
was
Fennek ?
Bevor du mir halbgarem VBA um dich wirfst, mach dich mal mit Datentypen bekannt.
So ein Schrott wie in diesem Thread hab ich noch selten gelesen.
XL rechnet wie die Norm IEEE 754 mit 32bit
Gruess Hansueli
Anzeige
Schade ...
04.05.2018 16:42:39
Günther
Bislang hat sich dieses Forum von anderen *.xl-Foren durch einen ausgesprochen respektvollen Umgangston hervorgetan.
So einen unschönen Umgangston wie in diesem Beitrag hab ich hier selten gelesen.
Aus meiner Sicht wäre etwas mehr Respekt gegenüber anderen Helfern angebracht, selbst wenn die Kritik inhaltlich zu 100% stimmen sollte.
Günther
Sorry, tut mir leid.
04.05.2018 19:41:15
EtoPHG
Hallo zusammen,
Die Antworten in diesem Forum ufern aber auch immer mehr ist absolut sinnlose Lösungen und/oder Diskussionen aus. Für das vorliegende Problem war die einzig sinnvolle Antwort, die von WF.
Dass bei XL bei 15 signifikanten Stellen Schluss ist, dürfte schon hunderte Male im Forum erwähnt worden sein. Wenn dann mit irgendwelchen abwegigen Ansätzen nach anderen Lösungen gesucht wird, kann es einem schon der Hut hochgehen. Warum mit diesen Zahlen 'gerechnet' werden soll, wird vom Anfragenden nicht begründet und ich kann mir ehrlich gesagt auch keinen solchen vorstellen.
Also schönes Wochenende und nehmt meine 'Frust'ausbrüche nicht allzu ernst.
Gruess Hansueli
Anzeige
AW: Wert in Zahl umwandeln - neues Fallbeispiel
04.05.2018 12:41:26
snb
Was SAP liefert ist kein Zahl, doch nur eine Code (=String)
Umwandeln in ein Zahl ist ein Gedankenfehler.
Wenn nur die letzte 7 Characters verwendet werden müssen:
=--right(A1;7)

Recht hast Du
04.05.2018 19:51:16
lupo1
... vorne steht der z.B. 2stellige Code; das ganze ist vermutlich ein Formatstring, der nach vorn bis zu diesem Code mit Nullen aufgefüllt ist. Die ersten drei Nullen der insgesamt 11 Nullen im Zahlenbeispiel sind für Excel nicht für den (mutmaßlichen) Centbetrag von RECHTS(A1;15) auswertbar. Vielleicht haben diese 3 Nullen noch eine andere Aufgabe.
AW: Wert in Zahl umwandeln - neues Fallbeispiel
04.05.2018 13:18:08
Günther
Moin,
wie schon mehrfach erwähnt: Das ist (für Excel) keine korrekte Zahl sondern eine Ziffernfolge als Text. Und wenn du nach dem Import tatsächlich die ganzen 20 Ziffern siehst, ist das auch Text.
Ich habe das einmal mithilfe von Power Query so gelöst, wie im Anhang (schrittweise) durchgeführt: https://www.herber.de/bbs/user/121437.xlsx
Anzeige

347 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige