Aufrechterhaltung der Genauigkeit signifikanter Ziffern (Microsoft Excel)
Ken fragte, ob es möglich sei, die Anzahl der signifikanten Stellen für in Excel eingegebene Werte beizubehalten. Zum Beispiel „12.345600“ und „1.230“.
Die kurze Antwort, Ken, ist, dass Sie nicht können. Warum? Weil Excel intern immer alles in 15 signifikante Stellen umwandelt. Wenn Sie 12 oder 12.0 oder 12.00000 eingeben, betrachtet Excel diese immer als 12.0000000000000, auch wenn dies im wahrsten Sinne des Wortes möglicherweise nicht technisch korrekt ist. Da Excel alles in 15 signifikante Ziffern konvertiert, werden nachfolgende Nullen in Zahlen abgeschnitten, die im allgemeinen Zahlenformat angezeigt werden.
(Aus der obigen Erklärung sollte ersichtlich sein, dass die Begriffe „signifikante Stellen“, „Genauigkeit“ und „Anzahl der Dezimalstellen“ völlig unterschiedliche Bedeutungen haben. Beispielsweise hat die Zahl 12.000 drei Dezimalstellen, aber fünf signifikante Stellen. (Ich bin sicher, die Mathe-Theoretiker im Publikum werden mich nur allzu gerne korrigieren, wenn ich falsch liege.)
Sie können ein benutzerdefiniertes numerisches Format für einzelne Zellen verwenden, das Ihre anzeigt Informationen, die die richtige Anzahl von signifikanten Stellen verwenden, dies hat jedoch keinen Einfluss auf die interne Funktionsweise von Excel. Sie können beispielsweise eine Zelle so formatieren, dass 12 oder 12.0 oder 12.00000 angezeigt werden. Dies ändert jedoch nichts an der Tatsache, dass Excel weiterhin alle Zahlen berücksichtigt 12.0000000000000.
Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, Ihre Zahlen als Text einzugeben, indem Sie ein Apostroph vor sie stellen. Mit anderen Worten, anstatt 12.0 einzugeben, geben Sie ’12 .0. Excel ein analysiert dann den Eintrag als Text (wegen der Apos trophe) und zeigt 12.0 in der Zelle an. Der einzige Nachteil dieses Ansatzes besteht darin, dass Sie die Zelle nicht in allen mathematischen Funktionen direkt referenzieren können. Einige von ihnen geben einen Fehler zurück, da Sie das, was Excel als Text betrachtet, in die Funktion aufnehmen. Der einfachste Weg, dies zu handhaben, besteht darin, sicherzustellen, dass Sie die Funktion = VALUE als Teil Ihrer Gesamtformel einschließen. Wenn Sie beispielsweise eine Zahl als Text in Zelle B7 eingeben und diese dann in einer Formel referenzieren müssen, können Sie dies folgendermaßen tun:
=VALUE(B7) * 100
Dies funktioniert hervorragend für Formeln mit Einzelzellenreferenzen. Es funktioniert jedoch nicht gut für Bereichsreferenzen. Wenn Sie eine Summe oder einen Durchschnitt für einen als Text eingegebenen Wertebereich erstellen müssen, wird Excel jedes Mal ersticken und einen Fehler zurückgeben, der darauf basiert, was die Funktion versucht.
Dies bringt uns zu der zweiten möglichen Lösung: entweder die signifikanten Stellen oder die Anzahl der Dezimalstellen vom tatsächlichen Wert getrennt zu halten. Für viele technisch-mathematische Zwecke ist dies der beste Weg, um mit der Situation umzugehen. In Spalte C können Sie beispielsweise Ihre Zahlen als Zahlen eingeben. Excel konvertiert sie natürlich intern in 15 signifikante Stellen. In Spalte D können Sie verschiedene Zahlen eingeben, die die Anzahl der Dezimalstellen darstellen, die auf die Werte in Spalte C angewendet werden sollen. Anschließend können Sie die Werte in Spalte D verwenden, um Formeln zu verwenden, die sich auf die Werte in Spalte C beziehen.
Eine letzte mögliche Lösung besteht darin, jede einzelne Zelle so zu formatieren, dass nur die Anzahl der Dezimalstellen angezeigt wird, die angezeigt werden sollen.
Mit der oben genannten Einschränkung (dass eine solche Formatierung die interne Darstellung von Zahlen durch Excel nicht beeinflusst) ist dies möglicherweise die beste Lösung. Natürlich ist es einfach, die Anzeigeformatierung einiger Zellen individuell anzupassen, aber dies bei hundert oder fünfhundert Zellen zu tun, ist eine andere Geschichte. Hier kann ein Makro nützlich sein. Betrachten Sie das folgende Makro:
Sub SigPlaces() Dim c As Range Dim strcell As String, NumFormat As String, DecSep As String Dim DecPtLoc As Integer, stringLen As Integer Dim numDecPlaces As Long DecSep = "." For Each c In Selection.Cells strcell = c.Value If IsNumeric(strcell) Then NumFormat = "#0" DecPtLoc = InStr(strcell, DecSep) If DecPtLoc > 0 Then NumFormat = NumFormat & DecSep stringLen = Len(strcell) numDecPlaces = stringLen - DecPtLoc NumFormat = NumFormat & String(numDecPlaces, "0") End If c.Value = Val(strcell) c.NumberFormat = NumFormat End If Next c End Sub
Wenn Sie Ihre Zahlen als Text eingeben (mit dem oben erwähnten Apostroph), können Sie die Zellen auswählen und dieses Makro ausführen. Die Texteingaben werden in Zahlen konvertiert, und die auf diese Zellen angewendete Formatierung wird so geändert, dass die gleiche Anzahl von Dezimalstellen angezeigt wird, die Sie in die Texteingabe eingegeben haben.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2045) gilt für Microsoft Excel 97, 2000, 2002 und 2003.