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

JSON.FROMRANGE

Categories: Excel, Lambda
Comments: 2

Ich muss schon gestehen, die Excel-Funktion LAMBDA fasziniert mich weiterhin. Weil ich in einem meiner Projekte per VBA-Code aus einzelnen Zellbereichen JSON-Daten generieren musste, hatte ich mich gefragt, ob sich vielleicht das Konvertieren eines Zellbereichs in JSON-Daten auch nicht mit einer Formel realisieren liesse. Vorab: ja, das geht – mit einer LAMBDA-Funktion!

Dieser Artikel beschreibt, wie ich zu diesem Zweck meine benutzerdefinierte Excel-Funktion JSON.FROMRANGE implementiert habe. Um alle nachfolgend beschriebenen Schritte nachvollziehen zu können, ist ein Grundwissen zu der LAMBDA-Funktion empfehlenswert. Mein Artikel zur Einführung der LAMBDA-Funktion in Excel stellt die LAMBDA-Funktion und deren Fähigkeiten ausführlich vor.

Zudem wird JSON.FROMRANGE Gebrauch von zwei Hilfsfunktionen machen, die jeweils selbst LAMBDA-Funktionen sind. Die erste dieser Funktionen ist ISODATETIME, die im gleichnamigen Artikel genauer erläutert wird. Die zweite Hilfsfunktion ist eine in JSON.FROMRANGE integrierte, rekursive LAMBDA-Funktion, deren Prinzip ich im Artikel LAMBDA-Funktionen als Variable rekursiv verwenden beschrieben habe.

JSON.FROMRANGE
Read more

ISODATETIME

Categories: Excel, Lambda
Comments: No

Derzeit entwickle ich die LAMBDA-Funktion JSON.FROMRANGE, die Daten aus einem Zellbereich in ein JSON-Datenformat konvertieren soll. Das JSON-Datenformat kennt per Definition verschiedene Datentypen, wie beispielsweise Texte, Zahlen oder Wahrheitswerte. Jedoch ist im JSON-Datenformat kein expliziter Datentyp zur Darstellung von Datums-und Zeitangaben vorgesehen. In der Regel hat sich jedoch die ISO-Norm ISO 8601 zur Darstellung von Datum- und Zeitangaben in JSON-Dateien durchgesetzt. Hierbei werden Datums- und Zeitangaben in Textform, also als String, angegeben.

Um nun Datum- und Zeitabgaben innerhalb meiner Funktion JSON.FROMRANGE in das JSON-Format umzuwandeln, erschien es mir sinnvoll, dafür eine separate Funktion zu implementieren. Zumal die Funktion JSON.FROMRANGE sowieso schon recht komplex sein wird.

Dieser Artikel stellt die Funktion ISODATETIME vor, die diese Aufgabe übernimmt. Die Funktion implementiert jedoch nicht alle Definitionen der ISO-Norm. Beispielweise ist die Darstellung von Perioden oder Wochenangaben nicht enthalten. ISODATETIME basiert auf der Ende 2020 in Excel eingeführten LAMBDA-Funktion.

ISODATETIME
Read more

Seit Ende 2020 steht in Excel – derzeit noch in der Beta-Version – die Funktion LAMBDA zur Verfügung, die es ermöglicht benutzerdefinierte Funktionen anzulegen. Eine detaillierte Einführung zu der LAMBDA-Funktion ist hier zu finden. Welche Möglichkeiten LAMBDA bietet, zeigt beispielsweise meine benutzerdefinierte Funktion TEXT.SPLIT zum Aufteilen eines Textes nach Trennzeichen, die ich im gleichnamigen Artikel beschrieben habe.

LAMBDA-Funktionen können auch rekursiv aufgerufen werden, sofern ein Abbruchkriterium definiert ist. Da jedoch benutzerdefinierte Funktionen im Namensmanager abgelegt werden, sind rekursive Funktion recht schwer zu debuggen, da ja jedesmal die im Namensmanager hinterlegte Funktion geändert werden muss. Dieser Artikel zeigt einen Weg auf, wie sich einerseits LAMBDA-Funktionen als Variable verwenden lassen und andererseits eine Rekursion ohne Definition der LAMBDA-Funktion im Namensmanager realisiert werden kann.

LAMBDA-Funktionen als Variable rekursiv verwenden
Read more

After the new LAMBDA function was released in Excel early December 2020 and playing around a little bit with that function and its recursive features, I quickly asked myself: would it be possible to perform calculations with large numbers in Excel by only using formulas?

Now, some weeks later, I can say: yes, that’s possible! I started with some array and text functions as helper functions and then implemented LNUM.SUM for adding large numbers in Excel. After that, I created the function LNUM.SUBTRACT to be able to subtract two large numbers. And I finally implemented LNUM.PRODUCT for multiplying two larger numbers, which then uses LNUM.SUM and LNUM.SUBTRACT.

I wrote an article about each function in this blog, where I presented my formulas. However, I am mainly blogging in German. Online translators are not able to translate Excel formulas correctly and as my audience lastly increased by many English-speaking readers, I thought to write this article in English and summarize the German articles about my LAMBDAs for large numbers. The following sections about my functions are not so much detailed as the articles in German, but I hope, they will provide the basic understandings.

Large number calculations in Excel
Read more

LNUM.PRODUCT

Categories: Excel, Lambda
Comments: 2

Nachdem ich in meinen vorherigen Artikeln die zwei LAMBDA-Funktionen LNUM.SUM und LNUM.SUBTRACT zum Addieren und Subtrahieren großer Zahlen in Excel vorgestellt hatte, war ich neugierig geworden, ob die Implementierung einer Funktion zur Multiplikation sehr großer Zahlen als rein formelbasierte Lösung ebenfalls möglich ist. Vorab – ja das geht und Excel rechnet sogar Hunderte von Multiplikationen großer Zahlen in akzeptabler Geschwindigkeit durch.

Dieser Artikel stellt die LAMDA-Funktion LNUM.PRODUCT vor, die zwei sehr großer Zahlen in Excel multipliziert, ohne auf externe Bibliotheken, wie z.B. Add-Ins, zurückzugreifen.

LNUM.PRODUKT
Read more

LNUM.SUBTRACT

Categories: Excel, Lambda
Comments: No

In einem früheren Artikel hatte ich die benutzerdefinierte Funktion LNUM.SUM vorgestellt, die das Addieren zwei sehr großer Zahlen als rein formelbasierte Lösung ermöglicht und dabei auf die kürzlich in Excel eingeführte LAMDBA-Funktion aufsetzt.

Dieser Artikel stellt nun die Funktion LNUM.SUBTRACT vor, die ebenfalls rein formelbasiert zwei sehr große Zahlen in Excel subtrahiert. Auch diese Funktion wird, wie LNUM.SUM, auf bereits von mir implementierte LAMBDA-Funktionen zurückgreifen, die im Artikel an entsprechender Stelle dann verlinkt sind.

LNUM.SUBTRACT
Read more

LNUM.COMPARE

Categories: Excel, Lambda
Comments: No

In meinem vorangegangen Artikel hatte ich meine benutzerdefinierte Funktion LNUM.SUM vorgestellt, die anhand der LAMBDA-Funktion eine reine Formellösung zur Addition sehr großer Zahlen in Excel ermöglicht. Als nächste Funktion würde ich gerne die Funktion LNUM.SUBTRACT implementieren, die dann sehr große Zahlen subtrahiert.

Der Algorithmus, den ich für die Subtraktion großer Zahlen vorgesehen habe, beruht jedoch auf der Verwendung des Neunerkomplements und darauf, dass die größere Zahl von der kleineren Zahl abgezogen wird. Deswegen benötige ich zunächst eine Funktion, die mir aus zwei großen Zahlen die größere und kleinere Zahl ermittelt.

Dieser Artikel stellt die Funktion LNUM.COMPARE vor, die den Vergleich zwei großer Zahlen durchführt und einen entsprechenden Wert zurückgibt. Als Nebeneffekt lassen sich dann LNUM.MAX und LNUM.MIN implementieren, die respektive die größere oder kleinere Zahl zurückgeben.

LNUM.COMPARE
Read more

LNUM.SUM

Categories: Excel, Lambda
Comments: No

Vor einer halben Ewigkeit – also ca. 10 Jahren, um genau zu sein – hatte ich in diesem Blog ein Add-In publiziert, um große Zahlen z.B. mit über 30 Stellen, in Excel zu addieren. Nun ist ja kürzlich die LAMBDA-Funktion in Excel erschienen, die auch rekursiv angewendet werden kann. Ich hatte mich dann gefragt, ob es mit einer LAMBDA-Formel möglich ist, eine reine Formellösung zur Addition großer Zahlen zu entwickeln. Vorab, ja das geht.

Dieser Artikel stellt die Funktion LNUM.SUM vor, die Addition sehr großer Zahlen in Excel übernimmt. In diesem Artikel wird zudem auf einige von mir bereits erstellte benutzerdefinierte LAMBDA-Funktion zurückgegriffen. Diese Funktionen sind an entsprechender Stelle verlinkt.

LNUM.SUM
Read more