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

Ab und zu fragt Bill Jelen – oder auch bekannt als MrExcel – die Excel Fangemeide z.B. via Twitter und YouTube nach Lösungswegen zu dem einen oder anderen Excel-Problem. In Excel führen viele Wege nach Rom und es ist immer wieder spannend zu sehen, auf welche Lösungen die Community kommt.

So wie auch vor einigen Tagen geschehen. Diesmal ging es darum, wie sich aus einem Bereich alle eindeutigen Werte sortiert als Liste anzeigen lassen. Primär ging es hierbei darum, die Excel-Funktion EINDEUTIG zu verwenden, die aus einer Spalte oder Zeile alle eindeutigen Werte extrahiert, jedoch nicht bereichsbezogen arbeiten kann.

In diesem Artikel werde ich meine Lösung vorstellen, wie dennoch mit der Excel-Funktion EINDEUTIG alle eindeutigen Werte aus einem Bereich mit mehreren Zeilen und Spalten extrahiert und sortiert werden können.

Kurzer Ausflug in die Welt dynamischer Arrays in Excel

Seit einiger Zeit wurden in Excel 365 sogenannte dynamische Arrays eingeführt – eine kleine Revolution in Excel. Denn Formeln, die mehrere Ergebnisse zurückliefern, können in nun neueren Excel-Versionen in benachbarte Zellen überlaufen. Dynamische Arrays und mit diesen in Excel eingeführten neuen Funktionen stehen allerdings nur neueren Excel-Versionen (Excel 365 in den Versionen ab Ende des letzten Jahres) zur Verfügung. Ältere Excel Versionen, wie Excel 2010 oder auch die Kaufversionen zu Excel 2016 und Excel 2019 kennen diese Features nicht.

Zunächst aber ein erläuterndes Beispiel zu dynamischen Arrays. Angenommen, wir haben eine Liste von Werten in 100-er Schritten im Bereich B2:B10. Soll nun der fünfte Wert aus der Liste extrahiert werden, liesse sich dazu die Formel INDEX(B2:B10;5;1) verwenden. In nachfolgender Abbildung ist dies in Zelle D2 dargestellt.

Einfache INDEX-Funktion
Read more


Excel-FAQ-Gruppe bei Facebook

Categories: Excel, News
Comments: No

Eben ist mir aufgefallen, dass ich noch gar keinen Beitrag zu der Excel-FAQ-Gruppe bei Facebook geschrieben hatte. Die öffentliche Gruppe führt Interessierte rund um Excel-Themen zusammen – Ziele sind Helfen und geholfen werden oder auch mal der lockere Plausch zwischendurch. Die Gruppe organisiert auch regelmäßig User-Treffen an verschiedenen Orten. So findet der bereits 4. Excel-Stammtisch am 14. März in Aachen statt. Wir freuen uns über jeden Zuwachs und laden Dich herzlichst in die Gruppe ein. Voraussetzung ist natürlich ein Facebook-Konto :-)

Excel-FAQ-Gruppe bei Facebook

 


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


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


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


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.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