Excel Reloaded die Matrixformeln 149 Vorbemerkung 151 Tipp 5.1: SVERWEIS()/WVERWEIS() mit genauer Übereinstimmung 152 Tipp 5.2: SVERWEIS() mit ungefährer Übereinstimmung 153 Tipp 5.3: Matrixkonstanten in SVERWEIS()-Funktion einsetzen 155 Tipp 5.4: Den SVERWEIS nach links ausführen: INDEX()/ VERGLEICH() 156 Tipp 5.5: AutoFilter durch Matrixformeln ersetzen 158 Tipp 5.6: Aufbau, Elemente und Dimensionen einer Matrix verstehen 160 Tipp 5.7: Mit der Funktion MTRANS() Zellen transponieren 161 Tipp 5.8: Einen bestimmten Buchstaben in einem Bereich zählen 161 Tipp 5.9: Zellen zählen, die einen bestimmten Buchstaben enthalten 163 Tipp 5.10: Matrixformeln debuggen 164 Tipp 5.11: Benannte Matrixkonstanten in Formeln einsetzen Vorbemerkung Matrixformeln sind ein Instrument zur Lösung komplexer Berechnungen mit Microsoft Excel. Sie können innerhalb einer Excel-Arbeitsmappe Tabellenblatt-übergreifend jedoch nicht Arbeitsmappen-übergreifend eingesetzt werden. In vielen Fällen werden sie als Ersatz für Datenbankfunktionen verwendet. Im Gegensatz zu normalen Formeln können Matrixformeln eine ganze Gruppe von Zellen gleichzeitig bearbeiten und dabei mehrere Berechnungen durchführen. Aus einer Gesamtmenge von Werten wird ein Teil der Daten mittels vorgegebenen Bedingungen daraus ausgewertet. Anstatt zeitraubend mehrere unterschiedlich zu definierende Einzelformeln zu erstellen, kann oftmals eine einzige Matrixformel verwendet werden. Matrixformeln sind Formeln, die anhand einer Matrix oder mehrerer Matrizen bestimmte Berechnungen ausführen. Was genau ist nun eine Matrix? In der EDV ist eine Matrix eine geordnete Sammlung von Werten: b Text (ABC) b Zahlen (1,2,3) b Fehlerwerte (#DIV/0!, #NV, #NAME?, #NULL!, #ZAHL!, #BEZUG!, #WERT!) 149
b Boolesche Werte (WAHR, FALSCH). In Excel kann eine Matrix ein- oder zweidimensional verarbeiten werden. Dies entspricht analog der Ausdehnung eines Bereichs über Zeilen und/oder Spalten im Tabellenblatt. Eine eindimensionale Matrix kann entweder in einem Zeilenbereich (horizontale Matrix) A1:E1 oder in einem Spaltenbereich (vertikale Matrix) A1:A5 eingetragen sein. Eine zweidimensionale Matrix wird in einem einfachen rechteckigen Bereich, der aus Zeilen und Spalten besteht, eingetragen A1:E5. Bei der Bereichsangabe einer Matrix ist es nicht möglich, ganze Zeilen 1:1 oder Spalten A:A anzugeben. Es wird lediglich eine Bereichseingabe bis zur vorletzten Zeile akzeptiert: =SUMME((A1:A65535="MVP")*(B1:B65535="Melanie Breden")*C1:C65535) Man sollte aus Rücksicht auf den Arbeitsspeicher die Dimensionieren auf das Notwendigste beschränken. Anstelle einer Matrix, deren Werte aus einem Zeilenbereich resultieren, können ebenso Matrixkonstanten eingesetzt werden. Matrixkonstanten enthalten alle Werte, die zur Berechnung herangezogen werden sollen: {1.3.4;WAHR.FALSCH.WAHR} Ohne dass es Ihnen vielleicht bewusst war, haben Sie ohne große Vorkenntnisse bereits Matrixformeln in Ihren Tabellen angewandt. Im Funktionsumfang von Excel werden bereits einige Matrixformeln bereitgestellt. Sie finden diese im Funktions-Assistenten, den Sie über den Menübefehl Einfügen/Funktion aufrufen, in der Kategorie Matrix. Zu den am häufigsten verwendeten Matrixformeln zählen die Funktionen SVERWEIS(), VERGLEICH(), INDEX(), WAHL() oder INDIREKT(). Wenn man in Excel von Matrixformeln spricht, sind meist jedoch nicht die integrierten Funktionen der Kategorie Matrix gemeint, sondern individuell erstellte Arrayformeln. Eigene Matrixformeln erkennen Sie daran, dass diese in der Bearbeitungsleiste einer Zelle von geschweiften Klammern { } umgeben sind. Die { } werden nicht vom Benutzer hinzugefügt, sondern Microsoft Excel schließt die Formel automatisch in { } ein, wenn Sie nach der Formeleingabe die Tastenkombination Strg+Umschalt+Eingabe drücken. HINWEIS: Das manuelle Hinzufügen der geschweiften Klammern um eine Formel herum bewirkt, dass die Formel als Text angesehen wird und nicht als zu berechnende Formel. Dazu ein erstes kleines Beispiel: Folgende Matrixformel ermittelt aus dem Bereich A1:A100 die Zelle mit dem längsten Inhalt/Zeichenfolge (Text oder Zahl) und liefert als Ergebnis die Anzahl der Zeichen in dieser Zelle: {=MAX(LÄNGE(A1:A100))} ACHTUNG: Wenn Sie nachträglich eine Formel als Matrixformel definieren wollen, reicht es nicht, die Formelzelle zu markieren und die Tastenkombination Strg+Umschalt+Eingabe zu drücken. Es ist zwingend erforderlich, zuvor in den Bearbeitungsmodus der Zelle zu wechseln. Dies erreichen Sie, indem Sie entweder die Taste F2 drücken oder mit der linken Maustaste in die Bearbeitungsleiste der Zelle klicken. Ausführliche Informationen und Grundlagen mit kleinen Beispielen zum Thema Matrixformeln erhalten Sie in der Excel-Hilfe. Schreiben Sie den Suchbegriff»Matrix«in das Fragefeld der Menüleiste und beenden die Eingabe mit der Eingabe-Taste. Im Aufgabenbereich werden daraufhin alle Suchergebnisse angezeigt. Die jeweiligen Seiten zeigen Sie mit einem Klick auf den gewünschten Suchbegriff an. In diesem Kapitel stellen wir Ihnen Tipps und Lösungen der MVPs Melanie Breden, Thomas Ramel, und Monika Weber vor. 150 Kapitel 5
Tipp 5.1: SVERWEIS()/WVERWEIS() mit genauer Übereinstimmung»In einer Excel-Tabelle führe ich zwei Spalten, in denen ich deutsche und englische Wörter eintrage, die ich sehr oft brauche. Es ist somit eine Art Übersetzungshilfe. Mittlerweise ist diese Liste recht umfangreich geworden. Zwar kann ich mit der Suchfunktion nach einem Wort suchen, aber dann muss ich das entsprechende Dialogfeld öffnen. Es würde mir die Arbeit sehr erleichtern, wenn ich einfach in eine Zelle das deutsche Wort eintragen könnte und in der Nebenzelle würde automatisch die englische Übersetzung dazu erscheinen. Lässt sich das mit einer Formel realisieren?«hier kann mit der Funktion SVERWEIS() gearbeitet werden. Das»S«vor»Verweis«steht für senkrecht. Die Funktion führt somit eine senkrechte Suche aus. Das Pendant dazu nennt sich WVER- WEIS(), wobei das»w«für waagrecht steht. Die Funktion SVERWEIS() wird angewendet, wenn die Liste in Spalten angeordnet ist, und WVERWEIS(), wenn die Datenquelle zeilenweise aufgebaut ist. Die Funktion SVERWEIS() weist genauso wie WVERWEIS() vier Parameter auf: b Suchkriterium: Hier wird der Suchbegriff eingetragen oder auf eine Zelle verwiesen, die den Suchbegriff enthält. b Matrix: Der Bereich, der durchsucht werden soll. b Spaltenindex: Die Nummer der Spalte, die den Rückgabewert liefern soll. b Bereich_Verweis: Hier wird die Eingabe von WAHR (1) oder FALSCH (0) erwartet. Den Wert FALSCH werden wir in diesem Beispiel zum Einsatz bringen. Der Verweis sagt aus, dass nur eine genaue Übereinstimmung des Suchbegriffs toleriert wird. Der Tipp 5.2 zeigt Ihnen ein Beispiel auf, in dem der Wert WAHR zum Einsatz kommt. Abbildung 5.1: Ein SVERWEIS mit genauer Übereinstimmung 1. Das Beispiel in Abbildung 5.1 zeigt, dass sich der Suchbegriff in der Zelle D1 befindet. 2. Die Matrix erstreckt sich über den Bereich A1:B30. 3. Der Rückgabewert befindet sich in der Spalte B. Es handelt sich damit um die zweite Spalte des angegebenen Bereichs. Somit ist der Spaltenindex eine 2. 4. Um eine genaue Übereinstimmung zu finden, muss beim Bereichsverweis eine 0 oder das Wort FALSCH eingetragen werden. 5. Die Funktion SVERWEIS wird in die Zelle E1 eingetragen. Die Formel lautet =SVERWEIS(D1;A1:B30;2;0). TIPP: Wenn nun in die Zelle D1 ein Wort eingetragen wird, das nicht in der Spalte B zu finden ist, gibt die Formel den Fehler #NV zurück. Wenn Sie an Stelle des Fehlerwertes eine Nachricht ausgeben möchten, können Sie den SVERWEIS in eine WENN()-Funktion einfügen: =WENN(ISTFEHLER(SVERWEIS(D1;A1:B30;2;0));"Wortnicht gefunden"; SVERWEIS(D1;A1:B30;2;0)) Der Aufbau der Funktion ISTFEHLER() wird in Tipp 3.13 im Detail behandelt. Excel Reloaded die Matrixformeln 151
HINWEIS: Der Suchbegriff muss immer in einer Spalte vorhanden sein, die sich links vom Ausgabewert befindet. Wenn eine Suche nach rechts aufgeführt werden soll, muss eine andere Formel angewendet werden. Mehr dazu erfahren Sie im Tipp 5.4. Tipp 5.2: SVERWEIS() mit ungefährer Übereinstimmung»In einer Excel-Tabelle führe ich einen Bußenkatalog für den Straßenverkehr. Dort ist aufgeführt, wie viel Bußgeld ich bezahlen muss, wenn ich eine bestimmte Anzahl an km/h zuviel gefahren bin. Ich möchte nun in eine Zelle eintragen können, mit wie vielen km/h ich zu schnell unterwegs war und in der Nebenzelle anzeigen lassen, was mich das kostet.«auch hier kann wieder mit der Funktion SVERWEIS() gearbeitet werden. Bei Bußenkatalogen verhält es sich allerdings so, dass diese meistens eine Toleranz zulassen. Das bedeutet, dass nicht für jeden einzelnen übertretenen km/h eine andere Geldstrafe bezahlt werden muss. Wenn zum Beispiel eine Übertretung von 5 bis 9 km/h der Fall war, so beläuft sich das Bußgeld pauschal auf 100 Euro. Erst bei einer Übertretung von 10 km/h wird eine höhere Geldstrafe fällig. Die Funktion SVER- WEIS() darf in diesem Falle also nicht nach einer genauen Übereinstimmung suchen, sondern muss die Toleranz im Bereich von 5 bis 9 ebenfalls zulassen. Abbildung 5.2: SVERWEIS() mit ungefährer Übereinstimmung WICHTIG: Bei solchen Tabellen ist es unerlässlich, dass die Spalte, die den Suchwert enthält (gemäß Abbildung 5.2 die Spalte km/h), aufsteigend sortiert ist. Ansonsten würde SVERWEIS() zu früh abbrechen und einen falschen Rückgabewert liefern. Die Funktion SVERWEIS() beginnt die Suche immer beim kleinsten Wert und arbeitet sich dann zum nächst größeren Wert vor. Erst wenn sie auf eine Zahl trifft, die größer ist als der Vorgabewert, bricht sie die Suche ab und geht eine Zeile zurück. In unserem Beispiel wird der Wert 12 (Zelle E2) gesucht. SVERWEIS() beginnt nun bei der Zelle A2 und vergleicht, ob in A3 ein größerer Wert als 12 vorliegt. Da dies nicht der Fall ist, wird die Suche fortgesetzt. Zwischen der Zelle A4 und A5 wird SVERWEIS() fündig. Da der Wert kleiner ist als der Eintrag in Zelle A5, geht die Funktion korrekterweise eine Zeile zurück und liefert als Ergebnis den Inhalt der Zelle B4. 1. Das Beispiel in Abbildung 5.2 ist so aufgebaut, dass sich der Suchbegriff in der Zelle E2 befindet. 2. Die Matrix erstreckt sich über den Bereich A1:C5. 3. Der Rückgabewert befindet sich in der Spalte B. Der Spaltenindex ist somit der Wert 2. 4. Um eine ungefähre Übereinstimmung zu finden, muss beim Bereichsverweis eine 1 oder das Wort WAHR eingetragen werden. Das ist in diesem Beispiel entscheidend. 5. Die Funktion SVERWEIS() wird in die Zelle F2 eingetragen. Die Formel lautet: =SVERWEIS(E2;A2:C5;2;1). 152 Kapitel 5
Tipp 5.3: Matrixkonstanten in SVERWEIS()- Funktion einsetzen»ich verwende eine Excel-Tabelle, um die Noten für Klassenarbeiten nach einem festen Punkteschema automatisch zu vergeben: Sehr gut >= 92 Punkte, Gut >= 81 Punkte, Befriedigend >= 67 Punkte usw. Bisher habe ich zur Berechnung eine mehrfach geschachtelte WENN()-Funktion verwendet. Nach dem Muster: WENN(Punktanzahl>=92;1;WENN (Punktezahl>=81;2;...usw.))). Gibt es eine einfachere Methode um die Noten zu berechnen? Die Werte der Punkte und Noten sollen aber nach wie vor nur in der Formel angegeben sein, damit ich die Formel problemlos auch in anderen Excel-Tabellen anwenden kann.«anstelle von verschachtelten WENN()-Funktionen eignet sich hier die Funktion SVERWEIS(). TIPP: In Tipp 5.1 und Tipp 5.2 zeigen wir Ihnen weitere Beispiele mit der SVERWEIS()-Funktion.. Als Voraussetzung für die Nutzung der SVERWEIS()-Funktion wird eine Matrix benötigt, die normalerweise Werte aus einem Bezug auf einen Bereich oder einen Bereichsnamen enthält. In unserem Beispiel befindet sich das Suchkriterium in der Zelle D2, die Matrix, also die Daten der Punkte und anzunehmenden Noten, im Zellenbereich A2:B7. Für die genannte Fragestellung wird eine Suche mit ungefährer Entsprechung des Suchkriteriums benötigt. Das bedeutet, dass die Werte im Suchbereich der ersten Spalte A2:A7 der Matrix A2:B7 in aufsteigender Reihenfolge angegeben sein müssen und das Argument Bereich_Verweis den Wert WAHR aufweist. Weiter wird der Spaltenindex 2 angegeben, weil sich die gewünschten Ergebnisse (Noten) im Bereich B2:B7, also in Spalte 2 der angegebenen Matrix A2:B7, befinden (siehe Abbildung 5.3). Die SVERWEIS()-Funktion mit Bezugsangabe lautet: =SVERWEIS(D2;$A$2:$B$7;2;WAHR) und liefert als Ergebnis für das Suchkriterium 82 den Wert 2. Abbildung 5.3: SVERWEIS() mit Matrix aus Zellenbezug Kommen wir nun zu dem Schritt, dass die Punkte- und Noten-Werte nicht fest in der Formel integriert sein sollen. Schauen wir uns dazu die einzelnen Ergebnisse der SVERWEIS()-Funktion in der Bearbeitungsleiste näher an. Markieren Sie zunächst die Formelzelle E2 und innerhalb der Formel den Bezug D2 und drücken die Taste F9. Daraufhin wird der tatsächliche Wert der Zelle D2»82«angezeigt. Excel Reloaded die Matrixformeln 153
Abbildung 5.4: Wert eines Zellbezugs in der Bearbeitungsleiste anzeigen Um wieder den Zellenbezug D2 anzuzeigen drücken Sie die Esc-Taste. Auf diese Weise können sämtliche Werte aus Bezügen bzw. Teilergebnisse aus Formelberechnungen in der Bearbeitungsleiste sichtbar gemacht werden. Wenn Sie nach der Anzeige von Zwischenergebnissen mittels der F9-Taste die Zelle mit der Eingabe-Taste verlassen, bleiben die ermittelten Werte anstelle der Bezüge als konstante Werte erhalten. HINWEIS: In einer gewöhnlichen Formel können Sie einen Bezug auf eine Zelle mit einem Wert oder den eigentlichen Wert eingeben, der auch als Konstante bezeichnet wird. Eine Konstante ist ein Wert, der nicht berechnet wird und sich aus diesem Grund auch nicht ändert. Die Zahl»210«und der Text»Quartalseinnahmen«stellen z.b. Konstanten dar. Ein Ausdruck oder ein aus einem Ausdruck resultierender Wert ist keine Konstante. Vergleichbar hiermit können Sie in einer Matrixformel einen Bezug auf eine Matrix A1:D10 oder die Matrix selbst mit Werten eingeben, was auch als Matrixkonstante bezeichnet wird. Matrixformeln können genau wie einfache Formeln Konstanten enthalten; die Matrixkonstanten müssen jedoch in einem bestimmten Format eingegeben werden. In unserem Beispiel soll aber nicht das Suchkriterium in Zelle D2, sondern die Werte der Matrix A2:B7 konstant in der Formel hinterlegt werden. Markieren Sie dazu erneut die Formelzelle E2 sowie innerhalb der Formel den Bezug der Matrix $A$2:$B$7 und drücken die Taste F9. Als Ergebnis sehen Sie die Matrixkonstanten: {0.6;30.5;45.4;67.3;81.2;92.1} die die exakten Werte des Zellenbezugs A2:B7 enthalten. Die restlichen Formeln bleibt unverändert erhalten: =SVERWEIS(D2;{0.6;30.5;45.4;67.3;81.2;92.1};2;WAHR) Verlassen Sie nun die Zelle E2 mit der Eingabe-Taste, damit die Matrixkonstanten in der Formel erhalten bleiben. Die Werte im ursprünglichen Matrixbereich A2:B7 können nun gelöscht werden, da sie für die Formelberechung nicht mehr benötigt werden (siehe Abbildung 5.5). Abbildung 5.5: SVERWEIS() mit Matrixkonstanten TIPP: Weitere Informationen zur Verwendung, Dimensionierung und Formatierung von Matrixkonstanten hält der Tipp 5.6 bereit. 154 Kapitel 5
Tipp 5.4: Den SVERWEIS nach links ausführen: INDEX()/VERGLEICH()»Ich suche eine Funktion, die exakt die gleiche Funktionalität hat wie der SVERWEIS. Nur mit der Suchreihenfolge von rechts nach links und nicht wie bei dem Original von links nach rechts. Das heißt, in der letzten Spalte steht das Suchkriterium, links daneben der gesuchte Wert.«Die Funktion SVERWEIS() kann in diesem Falle nicht verwendet werden. Eine Kombination der Funktionen INDEX() und VERGLEICH() liefert das gewünschte Ergebnis. Abbildung 5.6: INDEX() in Kombination mit VERGLEICH() führt eine Suche nach links durch Die Abbildung 5.6 zeigt, dass in unserem Beispiel in der Zelle E2 folgende Formel steht: =INDEX(A:A;VERGLEICH(D2;B:B;0)) Gestützt auf den Suchbegriff in Zelle D2 wird in der Matrix nach dem übereinstimmenden Wert, der links des Suchbegriffs steht, gesucht. Um zu verstehen, was in der Formel geschieht, sehen wir uns die Formel im Detail an. Die Funktion VERGLEICH() erwartet drei Übergabewerte: b Suchkriterium: In unserem Fall die Zelle D2. b Suchmatrix: Da sich der Suchbegriff in der Spalte B befindet, verwenden wir den Bezug B:B. b Vergleichstyp: Hier verwenden wir den Wert 0. Dieser gibt den ersten Wert zurück, der mit dem Suchkriterium übereinstimmt. Der Rückgabewert der Funktion VERGLEICH() ist der Index 4. Das bedeutet, dass sich innerhalb der Suchmatrix B:B, der Suchbegriff an der vierten Stelle befindet. Hätten Sie als Suchmatrix den Bereich B2:B7 eingetragen, wäre der Rückgabewert eine 3. Wir wissen jetzt, dass sich unser Suchbegriff innerhalb der Spalte B in der vierten Zeile befindet. Wir benötigen nun eine Funktion, die es möglich macht, in der Spalte A auf die vierte Zeile zuzugreifen. Dazu verwenden wir die Funktion INDEX(). Die Funktion INDEX(), wie wir sie hier verwenden, erwartet drei Übergabewerte, wobei wir nur zwei davon ausfüllen müssen: b Matrix: Der gewünschte Rückgabewert befindet sich in unserem Beispiel in der Spalte A. Deshalb tragen wir als Matrix A:A oder A1:A7 ein. b Zeile: Innerhalb der Matrix, also der Spalte A, möchten wir den Wert ausgeben, der sich in der vierten Zeile befindet. Um das Ganze dynamisch zu halten, ermitteln wir diesen über die Funktion VERGLEICH(). Als Zeile tragen wir somit die Formel VERGLEICH(D2;B:B;0) ein. Abbildung 5.7: Die Funktion INDEX() mit Verwendung von VERGLEICH() Excel Reloaded die Matrixformeln 155
Tipp 5.5: AutoFilter durch Matrixformeln ersetzen»in einer Excel-Tabelle habe ich eine Liste mit Daten. In Spalte A steht unterschiedlicher Text, in Spalte B Text und teilweise sind die Zellen leer. Diese Liste habe ich mit dem AutoFilter versehen und werte je nach Filterung bestimmter Kriterien die Daten mit der Funktion TEILERGEBNIS() aus. Leider bleiben die ermittelten Werte bei einer neuen Filterung nicht erhalten. Gibt es eine Formel, mit der ich das Filtern der Liste sozusagen simulieren kann?«aufgrund der Fragestellung sei eine Tabelle wie in Abbildung 5.8 gegeben. Um die Anzahl der gefilterten Tabelle zu ermitteln, wird in der Funktion TEILERGEBNIS() als erster Parameter die Zahl 3 angegeben. Sie steht für die Funktion ANZAHL2(), welche ermittelt, wie viele Werte aus Zahlen oder Text eine Liste von Argumenten enthält. Abbildung 5.8: Berechnung einer gefilterten Liste mit der Funktion TEILERGEBNIS() Ausgehend von der Beispieltabelle in Abbildung 5.8 wollen wir nun mit einer Formel die Anzahl Datensätze ermitteln, die in Spalte 1 den Buchstaben»A«und in Spalte 2 einen Wert aufweisen. Prinzipiell lautet die jeweilige Syntax dieser logischen Abfragen: b =A2:A15="A" b =B2:B15<>"" Gibt man diese Formeln in Zellen auf dem Tabellenblatt ein, erhält man als Ergebnis den Wahrheitswert des ersten Bezugs. Markieren Sie die Formel in der Bearbeitungsleiste und drücken Sie die Taste F9, um als Ergebnis eine Matrix zu erhalten, die zu jeder Zelle im angegebenen Bezug den jeweiligen Wahrheitswert liefert (siehe Abbildung 5.9). Abbildung 5.9: Wahrheitswerte einer Matrix 156 Kapitel 5
Die booleschen Werte (Wahrheitswerte) FALSCH und WAHR werden in Excel mit 0 und 1 gewertet. Stellen Sie zur Verdeutlichung dem Ausdruck =A2:A15 ="A" zwei Minuszeichen voran =--(A2:A15 ="A"). markieren dann wiederum den gesamten Ausdruck und drücken die Taste F9. Sie sehen, dass aus den Matrixwerten {WAHR;FALSCH;FALSCH;WAHR;FALSCH;FALSCH;WAHR;FALSCH; } die Zahlenmatrix {1;0;0;1;0;0;1;0;0;1;0;0;1;0} generiert wird, welche mit einfachen Funktionen wie SUMME() oder ANZAHL() berechnet werden kann. HINWEIS: Das Voranstellen von zwei Minuszeichen ( ) bedeutet eine mathematische Operation, durch die die nachfolgenden Text- oder Wahrheitswerte in reine Zahlenwerte umgewandelt werden. Multiplizieren wir nun die beiden logischen Ausdrücke in der SUMME()-Funktion, um eine einzelne Matrix zu erhalten: =SUMME(--(A2:A15="A")*--(B2:B15<>"")) Würden wir die berechneten Wahrheitswerte der logischen Ausdrücke darstellen, stünde in der Formel nichts anderes als: =SUMME({1;0;0;1 ;0;0;1;0;0;1;0;0;1;0}*{0;1;0;1;1;1;0;0;0;1;1;0;0;1}) Wenn Sie in der Bearbeitungsleiste den gesamten Formelteil zwischen dem Klammernpaar der Funktion SUMME() wiederum mit der F9-Taste berechnen, erhalten Sie eine Matrix aus 0 und 1, die die Berechnung beider Matrizen der logischen Ausdrücke wiedergibt (siehe Abbildung 5.10). Abbildung 5.10: Wahrheitswerte aus logischen Ausdrücken in Zahlen ausgedrückt Jetzt ist es leicht zu verstehen, dass die Funktion SUMME() die einzelnen Zahlenwerte aus 0 und 1 addiert und das richtige Ergebnis 2 zurückgibt. WICHTIG: Es reicht nicht aus, die obige Formelzelle mit der Eingabe-Taste zu verlassen. Da es sich um eine Matrixformel handelt, muss sie mit der Tastenkombination Strg+Umschalt+Eingabe abgeschlossen werden. Excel Reloaded die Matrixformeln 157
Anstatt die Funktion SUMME() als Matrixformel anzuwenden, eignet sich ebenfalls die Funktion SUMMENPRODUKT(), welche die einander entsprechenden Komponenten der angegebenen Matrizen miteinander multipliziert und die Summe dieser Produkte zurück gibt: =SUMMENPRODUKT((A2:A15="A")*(B2:B15<>"")) Die Funktion SUMMENPRODUKT() wird nicht als Matrixformel mit der genannten Tastenkombination abgeschlossen, sondern als einfache Formel mit der Eingabe-Taste. Sie können die Funktionen SUMMENPRODUKT() und SUMME() für weitere logische Prüfungen um jeweils bis zu 30 Matrizen erweitern. Tipp 5.6: Aufbau, Elemente und Dimensionen einer Matrix verstehen»wie erstelle ich Matrizen oder Matrixkonstanten, um sie anschließend in Formeln und Funktionen zu verwenden? Wie werden diese Matrizen aufgebaut?«eine Matrix ist kurz gesagt ein rechteckiger Bereich, der sich aus Zeilen und Spalten zusammensetzt; so ähnlich also wie die Zellenaufteilung in Excel. Sie kann Ganzzahlen, Dezimalzahlen, Texte, Fehlerwerte (z.b. #NV, #WERT!) und boolesche Werte (WAHR, FALSCH) enthalten. Texte werden in Anführungszeichen ("") eingeschlossen und Zahlen dürfen keine Formatierungen wie Währung oder Prozent aufweisen. Alle Inhalte von Matrizen sind Konstanten und können ihren Wert nicht verändern, daher kann eine Matrix keine Variablen oder Formeln enthalten. Die kleinstmögliche Matrix enthält genau einen Wert. Das wohl auffälligste Merkmal sind die geschweiften Klammern, welche die Matrix umschließen ({}) (siehe Abbildung 5.11). Abbildung 5.11: Einige Beispiele unterschiedlicher Matrizen Wie Sie an den Beispielen erkennen können, werden die einzelnen Werte innerhalb der Matrix durch Trennzeichen unterteilt. Diese sind der Punkt als Spaltentrenner und das Semikolon als Zeilentrenner (siehe Tabelle 5.1). WICHTIG: Die Zeichen für die Trennung von Zeilen und Spalten innerhalb einer Matrix sind abhängig von den Ländereinstellungen in der Systemsteuerung des Betriebssystems. Je nach verwendetem Dezimaltrennzeichen wird für den Spaltentrenner der das Zeichen Backslash (\) anstelle des Punktes verwendet. Für den deutsprachigen Raum ergeben sich daher die folgenden Werte: Ländereinstellung Spaltentrenner Zeilentrenner Deutsch (Deutschland). (Punkt) ; (Semikolon) Deutsch (Österreich). (Punkt) ; (Semikolon) Deutsch (Luxemburg). (Punkt) ; (Semikolon) Deutsch (Schweiz) \ (Backslash) ; (Semikolon) Deutsch (Liechtenstein) \ (Backslash) ; (Semikolon) 158 Kapitel 5
Tabelle 5.1: Übersicht der Matrixtrennzeichen bei unterschiedlichen Ländereinstellungen Beachten Sie diesen Unterschied beim Erfassen von Matrixkonstanten und verwenden Sie das Trennzeichen, das den Ländereinstellungen Ihres Betriebssystems entspricht. Beim Öffnen von Excel-Mappen unter anderen Ländereinstellungen werden die Trennzeichen automatisch angepasst; darum brauchen Sie sich also nicht zu kümmern. Eine Matrix hat immer zwei Dimensionen, nämlich eine Anzahl von Spalten und Zeilen. Wenn in der einen Richtung nur ein Element vorhanden ist, spricht man auch von eindimensionalen Matrizen, welche als einzeilige oder einspaltige Matrizen bezeichnet werden. Daraus ergibt sich, dass in den obigen Beispielen die erste Matrix eine einzeilige, die zweite und die dritte eine einspaltige und die vierte eine mehrdimensionale Matrix ist. Die Matrix beginnt immer mit der Auflistung der Werte der ersten Zeile, dann folgt der Zeilentrenner und die Werte der nächsten Zeile. Sie können nun also eine Matrix erstellen, indem Sie diese quasi»von Hand«Stück für Stück eintragen. Wie Sie nach kurzer Zeit feststellen werden, verliert man dabei leicht den Überblick, in welcher Zeile und Spalte der Matrix man sich gerade befindet (mir zumindest geht es regelmäßig so). Ich verwende daher gerne die Funktionen und Möglichkeiten von Excel. Um eine horizontale Matrix der Wochentage aus den obigen Beispielen zu erhalten, gehen Sie wie folgt vor: 1. Tragen Sie die Wochentage in sieben nebeneinander liegende Zellen ein, z.b. in A1:G1. 2. Schreiben Sie in eine beliebige Zelle, z.b. in H1 die Formel =A1:G1. 3. Lassen Sie die Zellenmarkierung auf der Zelle H1 stehen und markieren in der Bearbeitungsleiste die ganze Formel =A1:G1 (siehe Abbildung 5.12). Abbildung 5.12: Die markierte Formel in der Bearbeitungsleiste 4. Entfernen Sie das Gleichheitszeichen zu Beginn der Formel, indem Sie nacheinander die Tasten F9, Pos1, Entf und Eingabe drücken. 5. In der Zelle H1 steht nun die fertige Matrix: {"Mo"."Di"."Mi"."Do"."Fr"."Sa"."So"} die Sie zur weiteren Verwendung nur noch kopieren müssen (siehe Abbildung 5.13). Abbildung 5.13: Die aus der Formel erzeugte Matrix Auf diese Weise können Sie sehr einfach beliebige Matrizen erzeugen (siehe Abbildung 5.14 und Abbildung 5.15). Abbildung 5.14: Eine mehrdimensionale Matrix Excel Reloaded die Matrixformeln 159
Abbildung 5.15: Eine Matrix mit gemischtem Inhalt Tragen Sie einfach alle Werte, die in der Matrix enthalten sein sollen, in einen Bereich des Excel- Tabellenblattes ein und erstellen Sie in einer Zelle einen Bezug auf diesen Bereich. Mit der Formel in der Zelle verfahren Sie dann wie beschrieben. Tipp 5.7: Mit der Funktion MTRANS() Zellen transponieren»ich möchte die Funktion MTRANS() verwenden, um Daten zu transponieren. Mit der Beschreibung in der Excel-Hilfe kann ich jedoch nichts anfangen.«abbildung 5.16: Daten mittels MTRANS transponieren 1. Wenn sich die Daten in der Quelle über fünf Zeilen erstrecken (A1:A5), müssen für den Zielbereich fünf Spalten markiert werden (B1:F1). Der Zielbereich muss somit gleich von Anfang an festgelegt werden und dieselbe Anzahl an Zellen umfassen wie der Quellbereich. 2. Geben Sie nun in die Formel {=MTRANS(A1:A5)} ein. Erzeugen Sie die geschweiften Klammern mit der Tastenkombination Strg+Umschalt+Eingabe, damit eine Matrixformel entsteht. Wenn der markierte Zielbereich mehr Zellen umfasst, als transponiert werden, wird in jeder überflüssigen Zelle der Fehler #NV eingetragen. Wenn die Markierung zu wenige Zellen umfasst, werden nur entsprechend viele Werte transponiert. In diesem Fall können Sie die Formel auch im Nachhinein noch erweitern. Markieren Sie die bereits vorhandene Matrix plus die zusätzlichen leeren Zellen, die befüllt werden sollten. Die Markierung muss beim ersten Matrixeintrag beginnen. Sobald die gewünschten Zellen markiert sind, drücken Sie die Taste F2 und Strg+Umschalt+Eingabe. Die Matrix wurde entsprechend erweitert. HINWEIS: Ein Transponieren kann auch ohne Formel erreicht werden. Wie dies geschieht, erfahren Sie im Tipp 6.8. 160 Kapitel 5
Tipp 5.8: Einen bestimmten Buchstaben in einem Bereich zählen»ich möchte ermitteln, wie oft der Buchstabe»e«in einem bestimmten Bereich vorkommt.«dies kann über eine entsprechende Matrix-Formel erreicht werden. Abbildung 5.17: Die Anzahl des Vorkommens des Buchstabens»e«ermitteln Die Formel dazu lautet: {=SUMME(LÄNGE(A1:C3))-SUMME(LÄNGE(WECHSELN(A1:C3;"e";"")))} Wie Sie aus der Formel erkennen können, wird im ersten Teil, also vor dem Minuszeichen, die Anzahl an Zeichen ermittelt, die sich in der Matrix befinden. Diese werden in Abzug gebracht mit der Anzahl an Zeichen, exklusive»e«. SUMME(LÄNGE(A1:C3)) Das Ergebnis aus der obigen Formel ist der Wert 60. Dieser setzt sich aus der Addition aller Zeichen zusammen, die sich in der Matrix befinden: {6.8.5;7.8.8;5.6.7} Nun wird die Anzahl an Zeichen ermittelt, die nicht einem»e«entsprechen: SUMME(LÄNGE(WECHSELN(A1:C3;"e";""))) Dies ergibt die Zahl 46: {5.5.4;6.7.5;4.4.6} Die Zahl 46 wird subtrahiert von der gesamten Anzahl an Zeichen und somit vom Wert 60. Damit ist die Differenz zwischen den beiden Formeln der Wert 14 und somit das Endergebnis. Das bedeutet, dass 14 Mal der Buchstabe»e«in dem angegebenen Bereich gefunden wurde. Der Kern der Berechnung konzentriert sich auf die Funktion WECHSELN(): WECHSELN(A1:C3;"e";"") Diese Funktion ersetzt den Buchstaben»e«jeweils durch einen Leerstring "". Damit wird sichergestellt, dass dieser Buchstabe keine Nummer erhält und somit von der Berechnung ausgeschlossen ist. Tipp 5.9: Zellen zählen, die einen bestimmten Buchstaben enthalten»in einem Bereich sind verschiedene Wörter enthalten. Ich möchte nun die Anzahl der Zellen erfahren, in denen ein Wort mit dem Buchstaben»x«steht.«Um dies zu realisieren, muss mit einer Matrix-Formel gearbeitet werden. Denken Sie daran, dass eine Matrixformel mit Strg+Umschalt+Eingabe abgeschlossen werden muss. Diese umgibt die Formel automatisch mit zwei geschweiften Klammern {}. Geben Sie diese Klammern nicht manuell ein, da die Matrix-Formel sonst nicht als solche erkannt wird. Die Ausgangslage lässt sich am besten anhand eines Bildes darstellen. In einem bestimmten Bereich soll die Anzahl der Zellen gezählt werden, die ein oder mehrere»x«-en enthalten. Excel Reloaded die Matrixformeln 161
Abbildung 5.18: Zellen zählen, die den Buchstaben»x«enthalten Die Formel dazu lautet: {=SUMME(WENN(ISTFEHLER(SUCHEN("x";A1:C3));0;1))} Um die Formel zu analysieren, arbeitet man sich am besten von innen nach außen vor. Der Kern der Formel stellt die Funktion SUCHEN("x";A1:C3) dar. Die Funktion SUCHEN() wird für gewöhnlich verwendet, um eine Zeichenkette innerhalb einer Zelle zu finden. Da wir die Suche jedoch auf einen ganzen Bereich ausdehnen möchten, müssen wir mit einer Matrix arbeiten. Auf diese Weise wird jede Zelle im Bereich auf die Übereinstimmung des gewünschten Buchstabens untersucht. Die Matrix-Funktion gibt eine Reihe von Fehlermeldungen und Zahlen zurück. Eine Zahl innerhalb der Matrix bedeutet, dass der Buchstabe»x«in der Zelle gefunden wurde. Die Zahl gibt die Position des ersten gefundenen»x«-zeichens innerhalb der Zelle an. Damit Sie sich ein Bild davon machen können, finden Sie nachfolgend eine Aufschlüsselung. Diese bezieht sich auf die obige Abbildung 5.18: {1.2.#WERT!;3.#WERT!.1;#WERT!.2.3} Ein Semikolon (;) zwischen den Einträgen deutet auf eine neue Zeile hin. Die Formel wird Zelle für Zelle und Zeile für Zeile von links nach rechts gelesen. Wir müssen nun sprichwörtlich den Weizen von der Spreu trennen. Das bedeutet, dass wir die Fehlermeldungen #WERT! abfangen müssen. Dazu verwenden wir eine WENN()-Funktion in Kombination mit ISTFEHLER(). Diese soll ermitteln, ob ein Fehler vorliegt oder nicht. Wenn ein Fehler eintritt, wird der Wert 0 übergeben. Wenn eine Zahl, beziehungsweise der Buchstabe»x«, vorhanden ist, lautet der übergebene Wert 1. Dabei ergibt sich bei unserer Konstellation folgende Matrix: {1.1.0;1.0.1;0.1.1} Das ganze Gebilde wird durch die Funktion SUMME() addiert, woraus das Ergebnis 6 resultiert. HINWEIS: Wenn die Suche case-sensitive sein soll, also zwischen Groß- und Kleinschreibung unterscheiden muss, verwenden Sie an Stelle von SUCHEN() die Funktion FINDEN(). Analog zu obiger Formel kann statt der Auswertung der Funktion ISTEFEHLER() in Verbindung mit SUMME() auch die Funktion ANZAHL() verwendet werden. In folgender Formel wird die Funktion FINDEN() dazu verwendet, die Zellen zu zählen, die im angegebenen Bereich den Buchstaben»X«enthalten. Die Buchstaben»x«bleiben unberücksichtigt: {=ANZAHL(FINDEN("X";A1:C3))} Die Funktion ANZAHL() berechnet, wie viele Zahlen eine Liste von Argumenten enthält. Verwenden Sie ANZAHL(), um zu ermitteln, aus wie vielen Einträgen ein Zahlenfeld besteht, das in einem Bereich oder in einer Matrix gespeichert ist. 162 Kapitel 5
Tipp 5.10: Matrixformeln debuggen»wie ich festgestellt habe, können Matrixformeln sehr komplex sein. Gibt es eine Möglichkeit, das Ergebnis eines Teils einer Matrixformel anzuzeigen?«um das Ergebnis oder den Inhalt von Teilergebnissen einer Matrixformel zu ermitteln, wird die Taste F9 verwendet. Am besten lässt sich das Verhalten an verschiedenen Beispielen erläutern. Die folgende Matrix-Formel zählt alle alphanumerischen Zellen im Bereich A1:A6: {=SUMME(WENN(ISTTEXT(A1:A6);1;0))} Wenn Sie in der Bearbeitungsleiste die gesamte Formel markieren und die Taste F9 drücken, wird in der Bearbeitungsleiste das Ergebnis angezeigt. Abbildung 5.19: Die Matrix- Formel in das Ergebnis umwandeln Wenn Sie die Eingabe-Taste drücken, wird die Formel durch das Ergebnis überschrieben. Drücken Sie die Esc-Taste, wenn Sie die Matrixformel beibehalten möchten. Um zu ermitteln, welchen Rückgabewert die Funktion WENN(ISTTEXT(A1:A4);1;0) liefert, markieren Sie diesen Teil der Formel, und drücken die Taste F9. Abbildung 5.20: Das Ergebnis der Funktion WENN() anzeigen Wenn Sie weiter in die Formel eindringen, können Sie ermitteln, welches Ergebnis die Funktion IST- TEXT(A1:A4) liefert. Markieren Sie dazu diesen Teil der Formel und drücken Sie die Taste F9. Abbildung 5.21: Das Ergebnis der Funktion ISTTEXT anzeigen Im innersten Kern der Formel befindet sich die Anweisung ISTTEXT(A1:A4). Wenn Sie sehen möchten, was der Inhalt des Bereiches ist, markieren Sie lediglich A1:A4 und drücken die Taste F9. Excel Reloaded die Matrixformeln 163
Abbildung 5.22: Den Inhalt des Bereiches A1:A4 anzeigen Je komplexer die Matrix-Formel ist, desto interessanter wird es, Teile davon offen darzulegen. Erweitern wir unsere Formel auf zwei Spalten. Die zu ermittelnden Textzellen befinden sich nun im Bereich A1:B4. Wenn wir den Inhalt der Funktion ISTTEXT() offen legen, wird der gesamte Bereichsinhalt sichtbar. Abbildung 5.23: Eine spaltenübergreifende Matrixformel Beachtenswert sind hier die Trennzeichen».«und»;«. Wie Sie der Bearbeitungsleiste in Abbildung 5.23 entnehmen können, sind nun beide Trennzeichen vertreten. Der Punkt trennt die Spalten und das Semikolon die Zeilen. Die Matrixformel wird somit von links nach rechts und von oben nach unten gelesen. Tipp 5.11: Benannte Matrixkonstanten in Formeln einsetzen»in einer Tabelle möchte ich anhand von Zahlen zwischen 1 und 12, die in Zellen der Spalte A stehen, den entsprechenden Monat in der Nebenzelle anzeigen. Ich kann mir vorstellen, dass dies über die Funktion TEXT() möglich ist, weiß aber nicht wie. Oder gibt es eine einfachere Möglichkeit ohne komplizierte Formelberechnungen?«Die Funktion TEXT() formatiert eine Zahl und wandelt sie in Text um. So kann man z.b. mit der Formel: =Text(A1;"MMMM") den Monat April des Datums 11.04.2005 aus der Zelle A1 ermitteln. Bei dieser Formel handelt es sich nicht um eine Berechnung, sondern der Datumswert wird lediglich in einer anderen Formatierung angezeigt. Dies ist vergleichbar mit dem benutzerdefinierten Zahlenformat. Um aus einer einfachen Ganzzahl einen Monatswert in Textform zu kreieren, ist es zunächst erforderlich, ein für Excel erkennbares Datum zu erzeugen, woraus dann der Monatswert wieder in Textform zurückgegeben wird. Dies erreichen Sie mit folgender Formel, unter Berücksichtigung, dass in der Zelle A1 eine Ganzzahl zwischen 1 und 12 steht: =TEXT("1."&A1;"MMMM") 164 Kapitel 5
Durch den Zusatz "1." vor dem Zellbezug A1 (der eine Monatszahl enthält) wandelt Excel diese Zeichenkette intern in ein Datum des aktuellen Jahres um. Aus diesem zusammengesetzten Datumswert kann der Monat in Textform wieder problemlos ermittelt werden. Eine weitere Möglichkeit, Zahlenwerten einen bestimmten Text zuzuweisen, besteht über benannte Matrixkonstanten. Definieren Sie dazu im Dialogfeld Namen definieren, das Sie über den Menübefehl Einfügen/Namen/Definieren oder die Tastenkombination Strg+F3 aufrufen, einen Namen (siehe Abbildung 5.24) z.b.»monate«und schreiben in die Bezugszeile folgende horizontale Matrixkonstante: ={"Januar"."Februar"."März"."April"."Mai"."Juni"."Juli"."August"."September"."Oktober"."November"."Dezember"} Abbildung 5.24: Eine Matrixkonstante einem Namen zuweisen HINWEIS: Die Schreibweise der obig benannten Konstante orientiert sich nach den deutschen Ländereinstellungen. In den schweizerischen Ländereinstellungen wird anstelle des Punktes (.) als Trennzeichen der Elemente ein Backslash (\) verwendet. Weitere ausführliche Informationen zum Aufbau, den Dimensionen und Elementen einer Matrix erfahren Sie in Tipp 5.6. Hier wird auch auf die speziellen Unterschiede zwischen den deutschen und schweizerischen Ländereinstellungen hingewiesen. Der Name Monate enthält nun eine Matrix aus zwölf Elementen. Es gilt nun, einfach nach der vorgegebenen Zahl die Position des gesuchten Elementes der Matrix und damit den Textwert des Monats zu ermitteln. Dies erreichen wir mit der Funktion INDEX() (siehe Abbildung 5.25): =INDEX(Monate;A1) Die Funktion INDEX() erwartet als ersten Parameter eine Matrix, die durchsucht werden soll, und gibt das Element aus dem im zweiten Parameter A1 angegebenen Wert zurück. Abbildung 5.25: Anzeige des Monats einer Ganzzahl mit benannter Matrixkonstante Excel Reloaded die Matrixformeln 165