Zahlen als Exponent

Hallo,

ich habe 15stellige ganze Zahlen aus Excel importiert (in Excel als Zahl formatiert).
Leider werden diese Zahlen in Access 2003 in der Tabelle immer mit dem Exponent angezeigt.
Wie kann ich die Anzeige ändern, dass ich wieder die ganzen Zahlen vollständig sehe?

Gruß Harald

Hallo,

ich habe 15stellige ganze Zahlen aus Excel importiert (in
Excel als Zahl formatiert).
Leider werden diese Zahlen in Access 2003 in der Tabelle immer
mit dem Exponent angezeigt.
Wie kann ich die Anzeige ändern, dass ich wieder die ganzen
Zahlen vollständig sehe?

versuch zunächst, im (Anzeige)Formular unter Eigenschaften/Format des betroffenen Textfeldes „Standardzahl“ auszuwählen oder ein benutzedefiniertes Format anzugeben:

###############0

Solche Zahlen werden intern als vom Datentyp Double gespeichert, der eine Genauigkeit von 17 Stellen besitzt.

Andere (Basis)Datentypen stellen nicht diesen Wertebereich zur Verfügung. Wenn mit diesen Zahelen nicht gerechnet werden muss, bietet sich eine Speicherung als String (Text) an. Dazu muss entweer in Excel die Spalte als Text formatiert sein oder der Import eine eine vorbereitete Tabelle mit passenden Feld-Datentypen erfolgen.

Gruß
Franz, DF6GL

d

Danke für die Antwort!

Ich muss mit diesen Zahlen weiter arbeiten und brauche auch im Ergebnis von Abfragen die genaue Zahl in voller Länge. Durch Tabellenverknüpfungen kann ich diese Zahlen auch nicht in Text umwandeln.
Welche Einstellung geht denn in der Tabelle, um die ganze Zahl zu sehen?
Gruß Harald

Hallo,

Ich muss mit diesen Zahlen weiter arbeiten

WIE musst Du damt weiterarbeiten (lediglich Anzeigen oder auch mathematische Berechnungen)?

und brauche auch im Ergebnis von Abfragen die genaue Zahl in voller Länge.

Für WAS? Zum Anzeigen oder um weitere Berechnungen anzustellen?

Durch
Tabellenverknüpfungen kann ich diese Zahlen auch nicht in Text
umwandeln.

Doch schon, es müssen nur ALLE betroffenen Schlüsselfelder in Text gewandelt werden.

Welche Einstellung geht denn in der Tabelle, um die ganze Zahl
zu sehen?

Habe ich (implizit) schon gesagt: Format-Eigenschaft des TABELLEN-Feldes auf 0 setzen

Anders gesagt:

die numerische Zahl bleibt gespeichert wie sie ist. Lediglich die Darstellung der Zahl am Bilschschirm kannst Du mit der Format-Angabe beeinflussen.

die „Zahl“ als String gespeichert bedarf keiner Formatangabe bei der Anzeige, nur kann man mit „Zahlen“ („Ziffernfolgen“) vom DAtentyp TEXT nicht numerisch (weiter)rechnen.

Ein 15-stelliger numerischer Wert kann nur in einem DOUBLE-Datentyp (max 17-stellig --> 17 Stellen Genauigkeit) ) gespeichert werden.

Gruß
Franz, DF6GL

Vielen Dank, mit der Formatierung hat es geklappt.

Gruß Harald

Ich muss mit diesen Zahlen weiter arbeiten und brauche auch im
Ergebnis von Abfragen die genaue Zahl in voller Länge. Durch
Tabellenverknüpfungen kann ich diese Zahlen auch nicht in Text
umwandeln.
Welche Einstellung geht denn in der Tabelle, um die ganze Zahl
zu sehen?

Hallo Harald,

Access kenne ich nicht.

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │
──┼─────────────────┼──────────────────┤
1 │ 123456789012345 │ '666667776666666 │
──┼─────────────────┼──────────────────┤
2 │ 543210987654321 │ 666667776666666 │
──┴─────────────────┴──────────────────┘
Benutzte Formeln:
B1: ="'"&WERT(A1)+WERT(A2)
B2: =WERT(A1)+WERT(A2)&" "

Zahlenformate der Zellen im gewählten Bereich:
A1:A2
haben das Zahlenformat: Text
B1:B2
haben das Zahlenformat: Standard

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Gruß
Reinhard

OT Nachfrage Zahlen in Access, 17

Solche Zahlen werden intern als vom Datentyp Double
gespeichert, der eine Genauigkeit von 17 Stellen besitzt.

Hallo Franz,

das mit der Genauigkeit von 17 Stellen verstehe ich nicht.
Okay, ich habe von Access nicht die geringste Ahnung aber ich glaube nicht daß sich in dem Access und Excel unterscheiden.

In Excel ist in der Tat die größte Zahl die man in eine Zelle eingeben kann irgendeine mit 10^308.
Das ist schon der Datentyp Double.

In der Excel-Hilfe steht aber eindeutig, das egal welche Zahl man
eingibt, immer nur 15 signifikante Stellen angezeigt/intern benutzt werden.

D.h. konkret, wenn du diese beiden Zeilen addieren willst:
12345678901234567890
12345678901234567890
so kommt ein falsches Ergebnis heraus.
Nämlich das wie wenn du
12345678901234500000
12345678901234500000
addieren würdest.

Solche genaueneren Additionen gehen dann nur noch per Vba, da geht das indem man wie in der Schule da alles Ziffer für Ziffer addiert.

Jetzt schreibst du in dem Zusammenhang etwas von 17.
Irgendwie glaube ich nicht daß die Anzahl signifikanter Stellen in Access 17 ist und in Excel 15.
Deshalb frage ich ja interessiert nach.

Gruß
Reinhard

Hallo,

das mit der Genauigkeit von 17 Stellen verstehe ich nicht.
Okay, ich habe von Access nicht die geringste Ahnung aber ich
glaube nicht daß sich in dem Access und Excel unterscheiden.

vielleicht etwas verwirrend: Access und Excel benutzen nicht die max. mögliche Genauigkeit eines Double (für die Anzeige , um eben Rundungsfehler, bzw. Overflow bei der int. Berechnung zu vermeiden.

In Excel ist in der Tat die größte Zahl die man in eine Zelle

eingeben kann irgendeine mit 10^308.
Das ist schon der Datentyp Double.

In der Excel-Hilfe steht aber eindeutig, das egal welche Zahl
man
eingibt, immer nur 15 signifikante Stellen angezeigt/intern
benutzt werden.

Die signifikante Stellenanzahl wird hier von Access/Excel vorgegeben, in der Tat 15 Stellen.

D.h. konkret, wenn du diese beiden Zeilen addieren willst:
12345678901234567890
12345678901234567890
so kommt ein falsches Ergebnis heraus.
Nämlich das wie wenn du
12345678901234500000
12345678901234500000
addieren würdest.

ja, so ist es auch.

Solche genaueneren Additionen gehen dann nur noch per Vba, da
geht das indem man wie in der Schule da alles Ziffer für
Ziffer addiert.

Wie meinst Du das? Nach dieser Methode müsste die Zahl in eine Ziffernfolge (String) umgewandelt , bzw. geführt werden, damit man auf die einzelnen Ziffern (die ja datentechnisch keine Zahlen darstellen, sondern eben Text/Ziffern sind)

In VBA ist aber der Double-Datentyp die logrithmische Darstellung einer Zahl und kein Text.

Deshalb auch mein anfänglicher Hinweis auf die weitere Verwendung die „Zahlen“

Jetzt schreibst du in dem Zusammenhang etwas von 17.
Irgendwie glaube ich nicht daß die Anzahl signifikanter
Stellen in Access 17 ist und in Excel 15.
Deshalb frage ich ja interessiert nach.

Ok, 15 Stellen werden auch in Access dargestellt.

Gruß
FRANZ, DF6GL

Hallo Franz,

vielleicht etwas verwirrend: Access und Excel benutzen nicht
die max. mögliche Genauigkeit eines Double (für die Anzeige ,
um eben Rundungsfehler, bzw. Overflow bei der int. Berechnung
zu vermeiden.

was ist denn die max. mögliche Genauigkeit eines Double?
Den Wertebereich kenne ich, was aber meinst du mit Genauigkeit,
das müssen doch wohl die signifikanten Stellen sein die
verwertbar sind.

Ja, wenn man was berechnet was den Rahmen von ca. 1*10^308 sprengt
gibt es Überlauf.

In der Excel-Hilfe steht aber eindeutig, das egal welche Zahl
man
eingibt, immer nur 15 signifikante Stellen angezeigt/intern
benutzt werden.

Die signifikante Stellenanzahl wird hier von Access/Excel
vorgegeben, in der Tat 15 Stellen.

Aha, die 17 hatte mich irritiert.

Solche genaueneren Additionen gehen dann nur noch per Vba, da
geht das indem man wie in der Schule da alles Ziffer für
Ziffer addiert.

Wie meinst Du das? Nach dieser Methode müsste die Zahl in eine
Ziffernfolge (String) umgewandelt , bzw. geführt werden, damit
man auf die einzelnen Ziffern (die ja datentechnisch keine
Zahlen darstellen, sondern eben Text/Ziffern sind)

Ja genau so. Ich hatte auf meiner Festplatte die leider im Nirwana ist einen Link zu einer Seite wo sich jmd. die Mühe gemacht hat/hatte
Vba-Funktionen zu erstellen die beliebig lange Zahlen die als Text vorliegen miteinander zu verechnen. Das Ergebnis ist dann auch ein String.

Und er hatte da nicht nur die vier Grundrechnungsarten sondern vieles mehr, Wurzel, Potenz, usw.

In VBA ist aber der Double-Datentyp die logrithmische
Darstellung einer Zahl und kein Text.

Der Datentyp Double bedeutet daß die Variable einen bestimmten (Zahlen-) Wertebereich umfassen darf.

Die Darstellung ist was völlig anderes.
Wir sind uns ja einig daß in Access und Excel Zahleneingaben
in Zellen vom Typ Double sind.

D.h. man gibt
12345
in eine Zelle ein und es wird auch so dargestellt wie es da steht.
Gibst du aber (in Excel) in eine Zelle eine Zahl ein die länger
ist, z.B. 12345600000 so wird sie auch noch so dargestellt.
Aber bei/ab Eingabe von 123456000000 wird dieses angezeigt
1,23456E+11
was ja nix mit Double zu tun hat.

Gruß
Reinhard

Hallo Reinhard,

vielleicht etwas verwirrend: Access und Excel benutzen nicht
die max. mögliche Genauigkeit eines Double (für die Anzeige ,
um eben Rundungsfehler, bzw. Overflow bei der int. Berechnung
zu vermeiden.

was ist denn die max. mögliche Genauigkeit eines Double?
Den Wertebereich kenne ich, was aber meinst du mit
Genauigkeit,
das müssen doch wohl die signifikanten Stellen sein die
verwertbar sind.

Ja, wenn man was berechnet was den Rahmen von ca. 1*10^308
sprengt
gibt es Überlauf.

In der Excel-Hilfe steht aber eindeutig, das egal welche Zahl
man
eingibt, immer nur 15 signifikante Stellen angezeigt/intern
benutzt werden.

Die signifikante Stellenanzahl wird hier von Access/Excel
vorgegeben, in der Tat 15 Stellen.

Aha, die 17 hatte mich irritiert.

Solche genaueneren Additionen gehen dann nur noch per Vba, da
geht das indem man wie in der Schule da alles Ziffer für
Ziffer addiert.

Wie meinst Du das? Nach dieser Methode müsste die Zahl in eine
Ziffernfolge (String) umgewandelt , bzw. geführt werden, damit
man auf die einzelnen Ziffern (die ja datentechnisch keine
Zahlen darstellen, sondern eben Text/Ziffern sind)

Ja genau so. Ich hatte auf meiner Festplatte die leider im
Nirwana ist einen Link zu einer Seite wo sich jmd. die Mühe
gemacht hat/hatte
Vba-Funktionen zu erstellen die beliebig lange Zahlen die als
Text vorliegen miteinander zu verechnen. Das Ergebnis ist dann
auch ein String.

Und er hatte da nicht nur die vier Grundrechnungsarten sondern
vieles mehr, Wurzel, Potenz, usw.

In VBA ist aber der Double-Datentyp die logrithmische
Darstellung einer Zahl und kein Text.

Der Datentyp Double bedeutet daß die Variable einen bestimmten
(Zahlen-) Wertebereich umfassen darf.

Das ist bei jedem Datentyp so…
Bei Double bedeutet das auch eine gewisse „Genauigkeit“ und die Möglichkeit für Dezimalstellen, im Gegensatz zu einem Integer-Wert.

Die Darstellung ist was völlig anderes.
Wir sind uns ja einig daß in Access und Excel Zahleneingaben
in Zellen vom Typ Double sind.

Nein, nicht ganz so, wenn man diese Aussage genau nimmt.

In Access werden Eingaben anhand definierter DATENTYPEN in die passende interne Darstellung umgesetzt.

Zumindest in VBA und in Tabellen. In ungebundenen Formular-Textfeldern kommt der VARIANT-Datentyp zum Tragen, der von vorherein unbestimmt ist und erst im Verlauf der Verarbeitung des Wertes einen definierten Unterdatentyp erhält. Im Verlauf der Benutzung dieses Datentyps in VBA kann durch die interne Daten(typ)konvertierung der Wert an eine explizit deklarierte Variable zugewiesen werden. (Oder, wenn man das explizit so will, durch die Verwendung der passenden Konvertierungsfunktion)
Ist ein Formularfeld gebunden, orientiert sich der Variant-Unterdatentyp des Feldes an demjenigen Datentyp, den das entspr. Tabellenfeld aufweist.

Wie Excel das nun intern handhabt (siehe die „seltsame“ und „Formatierung“ genannte Datentyp-Deklaration), weiß ich jetzt nicht. (Wahrscheinlich rechnet Execl intern immer mit VARIANT) Eine Formatierung ist in Excel NICHT das Gleiche wie die Deklaration einer Variablen mit einem bestimmten Datentyp. Eine Formatierung (Format eines Wertes) ist in Access lediglich die gewünschte visuelle Darstellung des Wertes am Bildschirm (bzw. beim Drucken). Offensichtliches Beispiel ist das „Datum“. Ein Datum wird intern als Double-Zahl geführt, wobei der Wert selber als Darstellung nun nicht so sehr interessant ist, eher die Form 20.05.2012 oder Sonntag, 20. Mai 2012 oder was auch immer…

Es gibt in Access auch noch ein paar weitere spezielle Datentypen, die die Einschränkungen von Double (64 bit-Floating Point) etwas aushebeln:

Currency (Währung, 64-bit Fixed Point, Genauigkeit: 15 Stellen links und 4 Stellen rechts vom Komma ) und Decimal (allerdings bisher unvollständig implementiert, soll heißen, Decimal ist nur über eine Konvertierung einer Variant- Variablen mittels CDec() generierbar. )

Aus VBA-Hilfe:

_Decimal-Datentyp

Variablen des Datentyps Decimal werden als 96-Bit-Ganzzahlen (12 Bytes) mit Vorzeichen mit einer variablen Potenz zur Basis 10 gespeichert. Die Potenz zur Basis 10 wird als Skalierungsfaktor verwendet und bestimmt die Anzahl der Nachkommastellen, die in einem Bereich von 0 bis 28 liegen kann. Beim Skalierungsfaktor von 0 (keine Nachkommastellen) liegt der größtmögliche Wert bei +/-79.228.162.514.264.337.593.543.950.335. Bei 28 Nachkommastellen liegt der größte Wert bei +/-7,9228162514264337593543950335 und der kleinste Wert, der ungleich Null ist, bei +/-0,0000000000000000000000000001.

Anmerkung Der Datentyp Decimal kann nur mit einem Wert vom Typ Variant benutzt werden, d.h., Sie können keine Variable als Decimal deklarieren. Mit der CDec-Funktion können Sie jedoch einen Wert vom Typ Variant erstellen, dessen Untertyp Decimal ist._

Insofern ist Access (und VBA) sehr „datentypen-lastig“ und man tut gut daran, von vornherein sich zu überlegen, mit welchen Werten man es zu tun hat und was man mit diesen Werten anstellen will.

Excel ist nun mal eine Kalkulationstabellen-Anwendung, und da spielen rationale Zahlen eben die Hauptsache. Nicht nur aus diesem Grund gibt es immer wieder Schwierigkeiten, wenn man Excel-Daten 1:1 nach Access importieren will.

Gruß
FRANZ, DF6GL

Hallo,

die Problematik geht über die MSWelt hinaus.

http://de.wikipedia.org/wiki/IEEE_754

MfG,

ujk