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

Archive for 2010

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

Read more

Heute nun der vierte Teil meiner Serie zum Thema „In Excel mit großen Zahlen rechnen“, der eine Funktion zur effektiven Berechnung von Potenzen in Excel VBA vorstellen wird. Wenn wir von dem Ursprungsproblem (die Berechnung von 80 hoch 200 in Excel, siehe den ersten Teil der Artikelserie) ausgehen, benötigen wir spätestens und unabhängig von der Darstellung des Ergebnisses ab 80 hoch 160 eine Funktion, die mit großen Zahlen umgehen kann.

Die Berechnung von 80 hoch 200 entspricht insgesamt von 200 – 1 = 199 Multiplikation der Zahl 80 mal sich selbst. Eine Funktion zur Multiplikation großer Zahlen steht uns ja bereits zur Verfügung; diese hatte ich im dritten Teil der Artikelserie vorgestellt. Problematisch ist jedoch die hohe Anzahl an benötigten Multiplikationen, die zu einer hohen Rechenzeit führen. Insofern gilt es zu schauen, ob die Anzahl der Multiplikation reduziert werden kann und, wenn ja, wie dies in VBA implementiert werden kann.

Binäre Exponentiation

Wenn man im Internet nach Lösungen zu diesem Problem sucht, findet man sehr schnell das Verfahren der „Binären Exponentiation“, das bereits 200 v. Chr. In Indien entdeckt wurde und quasi als das Standardverfahren zur Reduktion der Anzahl der Multiplikationen gilt.

VBA Large Numbers

Read more

Nachdem wir nun eigene Berechnungsroutinen für die beiden Grundrechenarten „Addieren“ und „Subtrahieren“ für sehr große Zahlen implementiert haben (siehe hierzu meine beiden vorherigen Beiträge „In Excel mit sehr großen Zahlen rechnen – Teil 1 – Addition“ und „In Excel mit sehr großen Zahlen rechnen – Teil 2 – Subtraktion“), können wir nun eine VBA Funktion zur Multiplikation großer Zahlen erstellen.

Der hierfür verwendete Algorithmus stützt sich auf den „Karatsuba Algorithmus“. Ich hatte zwar schon dazu einen Artikel in meinem Blog auf meiner Softwareseite geschrieben, diesen Artikel hier im Excel Ticker Blog aber noch nicht übertragen. Deshalb an dieser Stelle nochmals ein paar Worte zur Funktionsweise vom Karatsuba Algorithmus.

Funktionsweise vom Karatsuba Algorithmus

Die Grundidee vom Algorithmus ist es, einerseits Multiplikationen durch Additionen und Verschiebeoperationen zu ersetzen und andererseits durch Aufteilung der zu multiplizierenden Zahlen Rechenschritte einzusparen. Das Prinzip nennt sich ‚Teil und Herrsche Prinzip‘, in Englisch ‚Divide and Conquer‘. Das Verfahren kann prima rekursiv angewandt werden, denn auch die Teilzahlen lassen sich wiederum aufteilen.

Der Karatsuba Algorithmus ist zwar nicht das schnellste Verfahren zur Multiplikation sehr großer ganzzahliger Zahlen, aber dafür recht einfach zu implementieren. Ein schnellerer Algorithmus ist übrigens der Schönhage-Strassen-Algorithmus, der auf einer schnellen Variante der diskreten Fourier-Transformation basiert. Wenn ich Zeit habe, werde ich mal eine VBA Implementierung von diesem Algorithmus ausprobieren.

VBA Large Numbers

Read more

Im ersten Artikel dieser Reihe hatte ich eine VBA Funktion vorgestellt, um große Zahlen in Excel addieren zu können. Prinzip hierbei ist, die in Strings abgelegten Zahlen blockweise zu addieren und anschließend die Blöcke wieder zusammenzufügen.

Dieser Artikel stellt nun eine VBA Funktion vor, um eine Subtraktion großer Zahlen durchzuführen; auch hier werden wir die Zahlen in Blöcke aufteilen, jedoch aber zusätzlich einen kleinen Trick anwenden.

Subtraktion von großen Zahlen in Excel

Im folgenden Bild sind die zwei Ausgangszahlen X und Y zu sehen. Die hier vorgestellte Funktion wird allerdings nur dann korrekt ablaufen, wenn beide Zahlen positiv sind und zudem X größer Y ist. Für spätere Berechnungen ist dies ausreichend, denn eine Subtraktion der Form „X – Y mit X < Y“ lässt sich durch eine Vorzeichenumkehr in das gewünschte Format umwandeln: „-(Y - X) mit Y > X“.

VBA Large Numbers

Read more

Vor einiger Zeit gab es im Forum „Office-Lösung“ eine sehr interessante Diskussion, wie in Excel der Wert von 80 ^ 200 ausgerechnet werden könnte. Mit Excel Bordmitteln ist dies leider so ohne weiteres nicht möglich, denn Excel schneidet Berechnungsergebnisse ab der 15. Stelle ab bzw. rundet diese auf oder ab. Auch eine Implementierung per VBA unter Verwendung der Standarddatentypen „Long“, „Single“ oder „Double“ ist nur bedingt möglich, denn der Wertebereich von Variablen dieser Typen ist begrenzt.

Heinz Schweigert, User des Forums, hatte damals im Thread vorgeschlagen, ob denn nicht meine experimentelle VBA-Anwendung „Karatsuba Algorithmus in VBA“ zur Berechnung von 80 ^ 200 verwendet werden könnte. Diese Anwendung bildet große Zahlen als „String“ ab und umgeht somit die Beschränkungen der anderen Datentypen. Nachteil ist jedoch, dass dann die Grundrechenarten zum Addieren und Subtrahieren selbst implementiert werden müssen.

Mein Code in dieser Anwendung war jedoch speziell zur Multiplikation von Zahlen mit sich selbst entwickelt worden, weshalb der Code noch entsprechend angepasst werden musste. Heinz hatte dies freundlicherweise zum Teil übernommen und eine angepasste Version dem Forum zur Verfügung gestellt, welche sehr schnell 80 ^ 200 ausrechnen konnte.

Dieser Artikel läutet eine Artikelserie ein, in welchen ich pro Artikel eine VBA Funktion für die Grundrechenarten mit großen Zahlen vorstellen werde. Anschließend wird ein Add-In erstellt werden, das die Funktionen komfortabel als Formel zur Verfügung stellt und dann auch zum Download bereit stehen wird. Schließlich plane ich das Add-In um weitere komplexere Rechenarten zu erweitern; wobei dies nur im Rahmen der mir zu Verfügung stehenden Zeit geschehen kann.

So nebenbei, Ziel des Add-Ins ist es nicht, gigantische Zahlen auszurechnen oder irgendwelche Rekorde zu brechen; dafür gibt es spezialisierte Programme. Das Ziel des Add-Ins ist es eher, über hinreichend schnelle Routinen im Alltag den Umgang mit großen Zahlen erleichtern.

Addition von großen Zahlen in Excel

Den Anfang macht heute eine Funktion zum Addieren von großen Zahlen. An dieser Stelle nochmal ein Danke schön an Heinz Schweigert für seine Ideen zur Verbesserung des Originalcodes.

VBA Large Numbers

Read more

Wir haben den Excel 2007 und Excel 2010 Kalender für 2011 leicht modifiziert und eine neue Einstellungsoption hinzugefügt. Diese ermöglicht das Datumsformat aus einer Liste auszuwählen. Vordefiniert sind gängige deutsche, englische und französische Datumsformate. Zudem können zwei weitere Datumsformate in der Tabelle zu den Ressourcen angegeben werden, die nun auch über die Navigationsleiste erreichbar ist.

Die Einstellung zu den Datumsformaten ist nur dann relevant, wenn Sie ein Betriebsystem verwenden, welches andere Buchstaben zur Bildung des Datumsformates benötigt; beispielsweise in Englisch „DD.MM.YYYY“ statt „TT.MM.JJJJ“. Für den Fall, dass eine Anpassung erforderlich wird, ist in der Tabelle zur Wochenansicht statt des Datums die Meldung „Bitte das Datumsformat in den Einstellungen überprüfen“ zu sehen.

Wir haben zudem den vorherigen Artikel „Excel 2007 und Excel 2010 Kalender für 2011 (DE-DE)“ mit der ausführlichen Beschreibung zum Kalender und dessen Features ebenfalls aktualisiert. Der Downloadlink hat sich nicht verändert und ist in dem zuvor genannten Artikel abrufbar.

 

Wir freuen uns nun, die erste deutsche Version des Excel Kalenders präsentieren zu dürfen, der am Ende des Artikels herunter geladen werden kann. Ursprünglich wurde der Kalender für den Microsoft Office Calendar 2011 Contest entwickelt. Da jedoch deutsche Feiertage untereinander mehr Abhängigkeiten aufweisen, als amerikanische Feiertage, habe ich den Kalender entsprechend erweitert. Eine Anpassung der US Version des Kalenders erfolgt in Kürze. Ausserdem habe ich ein paar kleinere Fehler in der ursprünglichen behoben.

Zunächst aber ein Danke schön an Andreas für das (erneute) Testen des Kalenders. Und natürlich auch ein Danke schön an Claudia für die Unterstützung beim Design und der Farbfindung. Einigen meiner Leser und Leserinnen wird sicherlich der Excel WM Planer zur Fußballweltmeisterschaft 2010 bekannt sein, der mit über 375.000 Downloads sich großer Beliebtheit erfreute. Das Design des Kalenders orientiert sich am Design des Excel WM Planers und enthält wie dieser eine Navigationsleiste am oberen Rand jeder Tabelle.

Der Kalender kann natürlich auch für 2012 verwendet werden, einfach in den Einstellungen das Jahr umstellen.

PS: so nebenbei, es ist zwar auf der Website zum Excel WM Planer recht still geworden, dieser wird aber weiterentwickelt und, so hoffe ich, rechtzeitig mit dem neuen Design dieses Blogs und aller meiner anderen Websites in einer neuen Version zur Verfügung stehen.

Excel Kalender 2011

Read more

Die Microsoft FUSE Labs haben ein paar nette und aus meiner Sicht auch sehr schicke Real Time Gadgets zum Einbinden auf die eigene Website publiziert. Die Gadgets stehen in verschiedenen Varianten zur Verfügung. Auf der Homepage findet sich auch ein komfortabler Konfigurator. Folgend ein Beispiel zu jeder Variante.

Nachtrag vom 09.03.2011: momentan scheint der Server bei Fuselabs Probleme zu haben. Deshalb sind die Links leider nicht zu sehen.

Nachtrag vom 01.05.2011: der Server funktioniert wieder bzw. das Problem war wohl nur temporär vorhanden :-)

» FUSE Labs Socials Gadgets