(C) 2009 - 2021 by Mourad Louha · Alle Rechte vorbehalten

In Excel mit sehr großen Zahlen rechnen – Teil 5 – Add-In für Excel

Dieser Artikel stellt die erste Version meines kostenlosen Add-Ins (Version 0.75 Build 151110) zum Rechnen mit großen Zahlen in Excel vor. Momentan sind benutzerdefinierte Funktionen zur Addition, Subtraktion, Multiplikation und Exponentiation implementiert. Beachten Sie bitte die Copyright- und Nutzungshinweise am Ende dieses Artikels. Der Code ist durch das Kennwort „excel-ticker“ geschützt. Das Add-In kann am Ende des Artikels heruntergeladen werden.

Der Code zum Add-In ist ebenfalls durch das für mich ausgestellte Zertifikat der Firma TC TrustCenter GmbH digital signiert. Dies bedeutet, dass nur das signierte Add-In der von mir entwickelten Originalversion (und auch spätere Updates) entspricht.

Zurzeit kann das Add-In nur mit Ganzzahlen rechnen, eine Erweiterung des Add-Ins für Kommazahlen ist jedoch bereits in Arbeit. Ausserdem ist geplant, in einer der nächsten Versionen des Add-Ins auch eine Funktion zur Division zur Verfügung zu stellen. Diese wird sich insbesondere auf die von Donald Knuth entwickelten Algorithmen und deren Ableitungen stützen. Ein weitere Funktion zur Berechnung von Ausdrücken der Form „X ^ Y Modulo N“ ist ebenfalls vorgesehen. Die Implementierung dieser Funktionen ist jedoch etwas komplexer; somit hatte ich mir überlegt, zunächst nur die bestehenden Funktionen in das Add-In zu verpacken.

Folgender wichtiger Hinweis ist zudem bei der Verwendung des Add-Ins zu beachten: Eine Zelle in Excel kann pro Zelle maximal 32.767 Zeichen enthalten. Sollte ein Formelergebnis aus dem Add-In diese Länge überschreiten, wird in der Zelle der Fehlerwert #WERT angezeigt. Solche Fälle können relativ schnell bei hohen Potenzen auftreten, zum Beispiel enthält 4 ^ 123456, das 74.328 Zeichen. Leider kann das Add-In diese Beschränkung nicht umgehen.

Namenkonventionen der Funktionen im Add-In

Das Add-In enthält nachfolgend beschriebene Funktionen, die beispielweise über den hier abgebildeten Funktionsassistenten in der Kategorie „Benutzerdefiniert“ aufgerufen werden können. Die Funktionen des Add-Ins stehen in den drei Sprachen Deutsch, Englisch und Französisch zur Verfügung.

VBA Large Numbers

Die Namensgebung der Formeln im Add-In orientiert sich stark an den Namen ähnlicher Formeln aus Excel. So kann in Excel über die Formel „SUMME(…)“ eine Summe aus Werten verschiedener Zellen und Bereiche gebildet werden. Die Formel im Add-In zur Bildung von Summen mit großen Zahlen habe ich entsprechend „GZSUMME(…)“ benannt, wobei dann „GZ“ für „Große Zahl“ steht. In ähnlicher Form sind die englischen und französischen Add-In Formeln aufgebaut: „LNSUM(…)“ mit „LN = Large number“ und „GNSOMME(…)“ mit „GN = Grand nombre“.

Auch die Benennung der Argumente der einzelnen Add-In Formeln orientiert sich an den in Excel üblichen Konventionen; bei GZSUMME(…) heißen die Argumente ähnlich wie in „SUMME()“ entsprechend „Zahl1“, „Zahl2“, „Zahl3“ usw. Einziger Unterschied besteht in der Anzahl der möglichen Argumente. In Excel erlaubt die Formel „SUMME()“ bis zu 30 Argumente, die Formel „GZSUMME()“ jedoch nur acht.

Addition und Subtraktion großer Zahlen mit GZSUMME()

Die Formel „GZSUMME()“ kann, wie bereits zuvor erwähnt, bis zu 8 Argumente enthalten. Erlaubt ist die Angabe eines Argumentes in Form eines ganzzahligen Wertes, in Form einer Zeichenkette oder in Form von Zell- bzw. Bereichsadressen. Beispiel: =GZSUMME($C$1; $D$15:$E$20; 1234; “56789“) würde, falls in Zelle $C$1 und $D$15:$E$20 Ganzzahlen enthalten sind, ein korrektes Ergebnis liefern. Leere Zellen werden als Null berechnet, Texte oder Buchstaben innerhalb solcher Zellen bzw. der Argumente führen zu einem Fehler. Formatierte Zahlen sollen kein Problem darstellen, solange die Zahl ganzzahlig ist. Zur Subtraktion großer Zahlen brauchen nur die Quelldaten mit einem Minuszeichen versehen zu werden.

VBA Large Numbers

Multiplikation großer Zahlen mit GZPRODUKT()

Ähnlich zu „GZSUMME()“ kann die Formel „GZPRODUKT()“ bis zu 8 Argumente enthalten. Als Ergebnis liefert die Formel das Produkt aller Zellen eines Bereiches, einzelner Zellen oder der übergebenen Werte. Es können also sehr große Zahlen entstehen. Auch wenn die Formel durch den Einsatz des Karatsuba Algorithmus sehr schnell rechnet, sollte eine zu exzessive Verwendung vermieden werden. Beispiel: =GZSUMME($C$1; $D$15:$E$20; 1234; “56789“) würde dann das Produkt aller Zellen in $D$15:$E$20 mal dem Wert in $C1$ mal 1234 mal „56789“ berechnen. Leere Zellen werden als Eins gesehen und, wie bei der Addition, Texte bzw. Buchstaben oder Kommazahlen führen zu einem Fehler.

VBA Large Numbers

Exponentiation großer Zahlen mit GZPOTENZ()

Diese Formel funktioniert auf ähnlich Weise, wie die Formel „POTENZ()“ in Excel und erwartet dementsprechend die Angabe der Zahl, die potenziert werden soll und der Zahl, die den Exponenten repräsentiert. Hier ist ein bisschen zur Vorsicht zu raten, beispielsweise dauert die Berechnung von „5 ^ 12345“ auf meinem Rechner ca. 30 Sekunden. Das ist zwar auch wieder sehr schnell, aber wenn viele solcher Berechnungen in der Tabelle enthalten sind, kumulieren sich die Zeiten. PS: das Originalproblem der Berechnung von „80 ^ 200“ ist quasi „sofort“ verfügbar.

VBA Large Numbers

Code zu den Funktionen im Add-In

In den letzten Artikeln wurde die Funktionen zur Addition, Subtraktion, Multiplikation und Exponentiation ausführlich beschrieben. Nach dem Zusammenführen dieser VBA Funktionen (Ok, eigentlich hatte ich diese sowieso schon in einer Mappe) wurden weitere zusätzliche Hilfsfunktionen sowie die eigentlichen benutzerdefinierten Funktionen für die Formeln implementiert.

Damit dieser Artikel nicht zu lang wird bzw. nicht zu sehr mit Code „durchmischt“ wird, habe ich mir überlegt, den Code zum Add-In in einem separaten Artikel genauer vorstellen.

Copyrights und Nutzungsbedingungen für das Add-In

Den Nutzern des Add-Ins wird eine eingeschränkte nicht-exklusive kostenlose Lizenz gewährt. Alleiniger Einsatzzweck des Add-Ins ist die Berechnungen von großen Zahlen in Microsoft Excel.

Es wird keine Gewährleistung gegeben, dass die Software fehlerfrei ist, Auslassungen enthält, den Ansprüchen der Nutzer entspricht oder ununterbrochen arbeitet. Zudem wird keinerlei Gewährleistung gegeben, dass Fehler behoben werden, Updates zur Verfügung gestellt werden oder neue Versionen erscheinen. Die Verwendung des Add-Ins erfolgt ausschließlich auf eigenes Risiko, dies schließt Schäden oder Datenverlust aus dem Gebrauch des Add-Ins, explizit mit ein. Eine Haftung des Autors des Add-Ins ist ausgeschlossen.

Die Publikation des Add-Ins auf elektronischen Datenträgern oder weiteren elektronischen Medien oder in Druckerzeugnissen bedarf einer schriftlichen Erlaubnis des Autors. Das Anbieten von Links zu diesem Artikel oder des Add-Ins selber auf kostenpflichtigen Internetportalen wird ohne Ausnahme nicht gestattet. Dies gilt ebenfalls für den Code des Add-Ins.

Der Code zum Add-In darf zu Realisierung eigener privater oder unternehmensinterner Projekte ohne Kommerzialisierung verwendet werden, die Hinweise zum Autor und weiteren im Code genannten Personen müssen im Code erhalten bleiben.

Das Eigentum, Urheberrecht und alle sonstigen gewerblichen und nicht gewerblichen Rechte verbleiben beim Autor des Add-Ins. Ausserdem gewährt die Verwendung des Add-Ins keinerlei Rechte an Marken oder Dienstleistungsmarken des Autors.

Abschließend ein herzliches Danke schön an Andreas Entenmann für das Testen des Add-Ins.

Folgend die zwei Download-Links. Erster Link enthält die Ursprungsversion, die reine 32 Bit Windows API’s verwendet und z.B. unter Excel 2007 verwendet werden kann. Der zweite Downloadlink enthält eine Version, die auch unter 64 Bit laufen sollte, also der API-Aufruf an die Gegebenheiten ab Excel 2010 angepasst wurde. Die zweite Version ist für moderne Rechner somit zu präferieren. Der Code ist durch das zuvor genannte Passwort geschützt.

 
Comments

Wann kommt der Code fürs Excel 2013. Warte schon sehnsüchtig danach. Sonst super Add-In!

Hallo Yannick,

Vielen Dank für’s Lob. Eine extra Version für Excel 2013 ist m.E. nicht notwendig, denn es funktioniert auch unter Excel 2013. Hast Du denn Probleme unter Excel 2013 festgestellt?

Viele Grüße :-)

Hallo Mourad,

vielen Dank für deine Arbeit! Leider funktioniert bei mir das Plugin nicht unter Excel2013, Windows7 x64. Folgende Fehlermeldung ist zu sehen: http://i.snag.gy/EGcDr.jpg
Außerdem musste ich dafür meine Sicherheitseinstellungen runterdrehen, da dein Zertifikat scheinbar abgelaufen ist: http://i.snag.gy/XjdqU.jpg

Ich würde mich freuen, wenn das sich fixen ließe.

Gruß
Daniel

Hallo Daniel,

vielen Dank für die Info. Bei mir auf einem 64-Bit Windows und einem 32 Bit Excel 2013 läuft’s problemlos. Ich vermute, dass auch Dein Excel 2013 in der 64-Bit Version installiert wurde, was zu einer solchen Fehlermeldung führt. Das liegt an den API-Funktionen, die ich mal angepasst habe. Und das Zertifikat entfernt. Hier eine neue Version Add-In zum Rechnen mit großen Zahlen in Excel (32 Bit/64 Bit). Ist allerdings von mir ungetestet; eine Rückmeldung, ob’s klappt wäre gut.

Viele Grüße, Mourad

Hallo,
gibt es schon ein Add in für Division großer Zahlen?

mfg

Mourad Louha

Hallo Jonas,

eine Version für die Division steht leider nicht zur Verfügung. Zwar hatte Heinz Schweigert damals im Office-Lösung-Forum eine Division implementiert; die Datei ist jedoch nicht mehr im Forum zugänglich.

Viele Grüße, Mourad