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

All posts tagged Excel 2010

Ab und zu bin ich auch im französischen Microsoft Office TechNet Forum unterwegs, einerseits um ein bisschen mein Französisch aufzufrischen und andererseits manchmal einfach aus Neugier. Vor einiger Zeit fragte dort jemand, ob es möglich ist, alle in Word 2010 als vertrauenswürdig eingestuften Dokumente zu ermitteln und in einer Tabelle aufzulisten.

Die Optionen von Office 2010 bieten hierzu leider keine Möglichkeit, denn der Dialog mit den Optionen zu den vertrauenswürdigen Dokumenten kennt nur wenige Einstellmöglichkeiten, unter anderem eine Option, alle bereits als vertrauenswürdig eingestuften Dokumente zu entfernen. Eine Liste der bereits hinzugefügten Dokumente fehlt jedoch.

Vertrauenswürdige Ordner und Dokumente

So hatte ich die Idee, selber ein kostenloses Excel Add-In zu entwickeln und alle vertrauenswürdigen Dokumente in einer Excel Tabelle aufzulisten. Und wenn ich schon mal dabei bin, so hatte ich es mir dann überlegt, wäre es sinnvoll, auch gleich die vertrauenswürdigen Dokumente von PowerPoint 2010 und Word 2010 sowie die vertrauenswürdigen Ordner für Office 2010 und Office 2007 in die Liste mit aufzunehmen.

Read more

Im letzten Artikel hatte ich die Features zu meinem kostenlosen Add-In zur Berechnung großer Zahlen in Excel (Downloadlink auch hier enthalten) vorgestellt. Dieser Artikel befasst sich nun mit dem Code zum Add-In und wird die wesentlichsten Funktionen beschreiben. Auf einige Funktionen werde ich logischerweise nicht mehr eingehen, denn diese wurden ja bereits in den vorangegangenen Artikeln dieser Serie erläutert.

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

Jemand stellte im MS Office Forum die Frage, warum Excel 2007 in bestimmten Konstellationen mit externen Daten verknüpfte Formeln immer wieder entfernt und durch Werte ersetzt hatte. Der User bemerkte auch, dass, wenn die verknüpfte Datei in einen anderen Ordner geschoben wurde, alles normal lief. Es stellte sich schließlich heraus, dass Sonderzeichen im Pfad zu verknüpften Datei zu diesem Verhalten geführt hatten. Microsoft empfiehlt grundsätzlich keine Sonderzeichen in Pfad- und Dateinamensangaben zu verknüpften Dateien zu verwenden. Trotzdem bin ich durch den Beitrag des Users im Forum neugierig geworden und habe ich es mal in Excel 2003, 2007 und 2010 getestet. Dabei bin ich zu interessanten Ergebnissen gekommen.

Microsoft Excel

Zunächst habe ich mir für das Testen eine Ordnerstruktur angelegt, wie oben im Screenshot zu sehen. Nehmen wir mal an, wir hätten ein paar Ordner, die jeweils in den Pfadnamen eckige Klammern als Sonderzeichen beinhalten. Und dass sich in diesen Ordnern Excel Dateien mit einer Monatsauswertung für diverse Produkte befinden.

Read more

Im Excel Hilfe Forum bei „Office Lösung“ stellte jemand die Frage, ob es denn möglich sein, eine Grafik aus dem Internet jede Minute automatisch aktualisieren zu lassen. Der User hatte im Forum einige Beispiel-URL’s angegeben, die eine Grafik (Gif) in einem definierten Zeitintervall auf dem Server aktualisiert.

In diesem Fall wird die Grafik auf dem Server jedoch dynamisch generiert und in Form von Rohdaten ohne jeglichen HTML-Code an den Browser übertragen. So nebenbei, in PHP würde man hierzu beispielsweise die Funktion header() und readfile() einsetzen. Die PHP Funktionen ermöglichen, wenn sie in einer bestimmten Reihenfolge und durch eine Angabe diverser Parameter (wie z.B. den Inhaltstyp „Content-Type“) aufgerufen werden, das direkte Senden binärer Daten an den Browser. Eine Webabfrage in Excel kann mit solchen Daten leider nicht umgehen. Somit muss eine andere Lösung her.

Excel Dynamic Image

Read more