13.12.2009

Excel - die einfachste aller Programmiersprachen!?

Meine persönlichen Anfänge mit dem Schreiben von Programmen waren nicht mit C oder Java - nein, noch nicht mal mit JavaScript. Die erste Programmiersprache, die ich erlernt habe und die nicht gleich auf den ersten Blick als eine erscheint, war Excel. Durch die simple Handhabung der grundlegenden Funktionen war es für den Einstieg in die Programmierung für mich sehr gut geeignet.
Dabei will ich im nachfolgenden Text ausschließlich auf das Programm an sich eingehen und nicht auf die erweiterte Nutzung von Excel mittels VBA.

Was sind nun die grundlegenden Charakteristika im Vergleich von Excel zu den gängigen Programmiersprachen?
  1. Darstellung
  2. Syntax
  3. Operatoren
  4. Variablen
  5. Objekte
  6. Bedingungen
  7. Logik
  8. Arithmetik
  9. Texte
  10. Schleifen
  11. Datenbanken/Matrizen
  12. Debugging
  13. Zusammenfassung


1. Darstellung
Der große Vorteil von Excel ist ganz klar die Kombination aus Frontend, Backend und Datenspeicher - ganz im Sinne von EVSA (Eingabe Verarbeitung Speicherung Ausgabe).

Eingabe
Die Eingabe ist generell überall möglich, jedoch gibt es auch bestimmte Optionen in Excel, die es ermöglichen Tabellenblätter zu verstecken, Zellen zu sperren und Inhalte zu schützen, damit nicht jeder das "Programm" ändern kann.
Jedoch bleiben dem Programmierer in Excel im Bereich der Gestaltung des User Interfaces nicht viele Möglichkeiten, da die typische Tabellenstruktur immer erhalten bleibt. Dennoch kann man mit ein wenig Kreativität und ein Zeit auch dieses Problem umgehen. (zB mit dem Einbauen von Steuerelementen, Bildern, usw)

Verarbeitung
In Excel kann man ganz einfach die einzelnen Bereiche voneinander trennen. Man kann also die Eingabe und Ausgabe zusammen auf einem Tabellenblatt haben, welches das UI darstellt und in einem versteckten Tabellenblatt die komplette Verarbeitung der Daten.

Speicherung
Ohne irgendwelche komplizierten Requests stellen oder Querylanguages lernen zu müssen, kann man ganz einfach auf eine "Datenbank" zugreifen. Gleichzeitig kann man in die Datenbank noch weitere Formeln intregrieren, um diese dynamisch zu gestalten.

Ausgabe
Man kann sich Werte einfach und strukturiert ausgeben lassen, ohne sich viele Gedanken darüber machen zu müssen. Diese kann man direkt, ohne weitere Elemente (zB SVG oder Canvas) zu verwenden, zu Diagrammen verarbeiten, als Pivot Tabellen analysieren oder mithilfe bedingter Formatierung nach Wunsch anderesweitig darstellen.


2. Syntax
Die Schreibweise von Excelfunktionen ist jener herkömmlicher Programmiersprachen sehr ähnlich - FUNKTION(Parameter1;Parameter2;...)
Sogar eine Verschachtelung der Funktionen ist bis zu einem gewissen Grad möglich. Der einzige Unterschied scheint wohl nur darin zu bestehen, dass Excel einen Strichpunkt als Trennzeichen für Parameter verwendet, während die meisten Programmiersprachen da eher einen Beistrich bevorzugen. Der Grund dafür ist relativ simpel: englische Programmiersprachen verwenden den Beistrich, da sie den Punkt als Dezimaltrennzeichen verwenden und es somit keine Probleme gibt, wenn sie eine Dezimalzahl als Parameter angeben. Das Gegenteil ist in der deutschen Version von Excel der Fall, weshalb man hier den Strichpunkt als Trennzeichen verwendet.

Eine Besonderheit von Excel ist wohl das "="-Zeichen vor Formeln und Verweisen. Dabei bestehen auch bei Verweisen einige Ähnlichkeiten zu Programmiersprachen. Eine wichtige ist wohl, dass man auch in Excel dynamische Verweise setzen kann. Das heißt, dass sich Verweise in der Zelle verändern können, ohne dass man die Formel in der Zelle ändert. Dies ist durch die Funktion INDIREKT() möglich.

Beispiel 1: "In Zelle A1 will man einen Verweis auf die Zelle A2 machen"
A1: =A2
A2: 5
Ergebnis in A1: 5

Beispiel 2: "In Zelle A1 will man einen Verweis auf eine Zelle machen, die in A2 angegben ist"
A1: =INDIREKT(A2)
A2: ="A3"
A3: =3
Ergebnis in A1: 3


3. Operatoren
Während es sowohl in Excel als auch in Programmiersprachen die gängigen Operatoren gibt (+ Addition, - Subtraktion, / Division, * Multiplikation) so gibt es doch kleinere Unterschiede:

In Excel fehlt unter anderem der für das Programmieren unentbehrliche Not-Operator, der oft durch ein Rufzeichen symbolisiert wird. Auch der Modulo-Operator (%) fehlt in Excel, ist jedoch als Funktion mit MOD() definiert.
Dafür existiert in Excel das Circumflex (^) als Potenzoperator, was in den Programmiersprachen zumeist als eigene Funktion definiert ist. (beispielsweise in JavaScript: Math.pow())

4. Variablen
Obwohl es für manchen nicht wirklich so aussieht, gibt es auch in Excel Variablen. Diese werden jedoch bei weitem nicht so weit genutzt, wie in Programmiersprachen. Ein Grund dafür ist wohl, dass Variablen in Excel auch nicht wirklich benötigt werden. Ein anderer Grund mag sein, dass scheinbar nur wenige wissen, wie man Variablen eigentlich definiert und dann auch einsetzt.

Die einfachste Art eine Variable zu definieren, ist wenn man auf den Namen der Zelladresse (links in der Formelleiste) klickt und den Variablennamen hineinschreibt. Dadurch hat man eine Variable erstellt, die für den Bereich steht, den man beim Hineinschreiben markiert hat. (also zB eine Variable mit dem Namen "Aktien" mit dem Bereich "A1:A25"). Statt also "=SUMME(A1:A25)" schreiben zu müssen, kann man nun "=SUMME(Aktien)" schreiben.
Weitaus nützlichere und dynamischere Variablen kann man definieren, wenn man auf "Einfügen/Namen/Definieren..." geht. Hier kann man einen Variablennamen vergeben und als Variablenwert nicht nur Zellen oder Bereiche, sondern ganze Formeln angeben. Wenn man dies nun mit Funktionen wie beispielsweise BEREICH.VERSCHIEBEN() kombiniert, dann lassen sich hier im Handumdrehen dynamische Formeln erstellen.

Nichtsdestotrotz sind Variablen in Excel den Variablen in Programmiersprachen weit unterlegen, und sind somit nur begrenzt einsetzbar. Meist werden jedoch auch Zellen als Variablenersatz eingesetzt, da schließlich auch A25 eine Art von Variable ist.

5. Objekte
In Excel ist die Kommunikation mit Objekten zumeist nur eine einseitige. Objekte können ganz einfach Werte in die Tabelle schreiben. Umgekehrt ist es jedoch ohne VBA kaum bzw gar nicht möglich, Objekte je nach Tabelleninhalt zu verändern. (zB bei Steuerlementen)
Bei Diagrammen ist das beispielsweise wieder nur in die andere Richtung möglich.

Während man sich mit Programmiersprachen eigene Objekte dynamisch erstellen kann, ist das in Excel nicht möglich. Hier kann man höchstens ein Objekt (zB Diagramme) dynamisch verändern, nicht jedoch neue Objekte automatisch hinzufügen oder löschen.

6. Bedingungen
DIE Excel Funktion, die man neben SUMME() anfangs lernt, ist eindeutig WENN(). Diese gibt es in so ziemlich jeder Programmiersprache. Dabei gibt es in Excel sogar noch weitere unterschiedliche Varianten davon, wie zum Beispiel SUMMEWENN(), ZÄHLENWENN() und seit Neuestem auch Funktionen wie SUMMEWENNS().
Solche Funktionen existieren in Programmiersprachen zumeist nicht, da man sie mit vorhanden Funktionen relativ leicht nachbauen kann.

7. Logik
Doch auch logische Funktionen kommen in Excel nicht zu kurz. Repräsentativ dafür sind UND() und ODER(), die jedoch in normalen Programmiersprachen eher durch einen Operator benutzt werden.

Beispiel: "Bedingung1 und Bedingung2 sollen zutreffen"
in Excel: UND(Bedingung1;Bedingung2)
in C: Bedingung1 && Bedingung2
in Java/JavaScript: Bedingung1 & Bedingung2
in ASP/VB: Bedingung1 and Bedingung2

8. Arithmetik
Mittels einer großen Auswahl an Funktionen wie zum Beispiel SUMME(), MITTELWERT() oder PRODUKT() kann man wohl so ziemlich alles berechnen, was man will. Sogar für spezielle Bedürfnisse gibt es diverse Funktionen, wie beispielsweise RMZ() zur Ermittlung von Annuitäten, KOMBINATIONEN() zur Berechnung der Kombinationen ohne Wiederholung oder KORREL() um den Korrelationskoeffizienten zweier Funktionen zu bekommen.

9. Texte
In Excel gibt es eine ganze Reihe von Funktionen, die einem dabei helfen sollen, Texte zu bearbeiten. Darunter sind Funktionen wie LINKS(), RECHTS() und TEIL(), aber auch ERSETZEN(), FINDEN(), LÄNGE(), VERKETTUNG(), und viele mehr. Trotz alledem stehen Textbearbeitungsfunktionen von Programmiersprachen dem in nichts nach.
Außer vielleicht mit der Funktion WIEDERHOLEN(), mit der man einen Text x-mal aneinanderhängen kann. Diese Funktion wird mit Programmiersprachen häufig mithilfe von Schleifen gelöst...


10. Schleifen
Schleifen sind Funktionen, die immer wieder von vorne anfangen, bis eine bestimmte Abbruchsbedingung erfüllt ist. Danach wird die Schleife abgebrochen und alles geht wieder seinen normalen Gang. Schleifen sind außerdem ein wichtiger Bestandteil von Programmiersprachen, da man mit ihnen große Probleme lösen kann, ohne viel schreiben zu müssen.


Wenn wir nun Schleifen in Excel ansehen, dann kann man sie als zwei Formeln ansehen.
Beispiel: In Zelle A1 ist eine Formel, die Bezug auf A2 nimmt - in Zelle A2 ist eine Formel, die Bezug auf A1 nimmt. Wenn man nun versucht das Auszuführen, dann trifft man auf einen Fehler, der schon so manchem untergekommen ist: ein sogenannter Zirkelverweis - oder eben: eine Endlosschleife.
Klarerweise führt das zu keinem Ergebnis, weshalb die Ausführung abgebrochen wird.
Versuchen wir nun eine Abbruchbedingung in eine der Zellen einzubauen, (zB in Form einer WENN() Funktion) dann ist es für Excel jedoch noch immer ein Zirkelverweis, wodurch keine Ergebnisse ausgegeben werden.

Wenn man also versucht Schleifen in Excel zu erstellen, dann merkt man schnell, dass es - wenn - dann nur sehr begrenzt möglich ist. Man kann also sagen, dass Schleifen in Excel nicht funktionsfähig sind, wodurch Excel eine wichtige Eigenschaft einer Programmiersprache fehlt.


11. Datenbanken/Matrizen
Während man die Datenspeicherung eigentlich eher immer in Datenbanken auslagert, ist es in Excel so, dass der Datenspeicher mit allem anderen verschmilzt. Somit wird die Datenspeicherung dynamisch und man kann ganz einfach auf alle Daten zugreifen, ohne irgendwelche Verbindungen zu externen Datenbanken aufstellen zu müssen.
Dennoch muss man auch dazusagen, dass Excel nicht für die Speicherung großer Daten konzipiert ist. Wenn man also mehr Daten speichern will, dann sollte man schon auf Datenbanktechnologien wie zum Beispiel Microsoft Access, MySQL, XML oder JSON zurückgreifen.


Weiters kann man in Excel die Daten ausschließlich null-, ein-, zwei- oder maximal noch drei- oder vierdimensional speichern. Ansätze mit mehr als zwei Dimensionen sind entweder schwer oder gar nicht in Excel umzusetzen.
  • 0D: Zelle =A1
  • 1D: Vektor (Zeile oder Spalte) =A1:A25
    über mehrere Zellen in eine bestimmte Richtung
  • 2D: Matrix (Bereich) =A1:C43
    über mehrere Zellen in beide Richtungen
  • 3D: Tabellenblatt =Daten!A1:C43
    über mehrere Tabellenblätter
  • 4D: Datei ='[meinExcel.xls]Daten'!A1:C43
    über mehrere Excel-Dateien (dazu sollten alle benötigten Dateien geöffnet sein)
Mit anderen Modellen als Excel kann man x-dimensionale Datenbanken erstellen und hat somit einen enormen Vorteil, wenn es um die genaue Strukturierung und Unterteilung von Daten geht, wodurch große Daten übersichtlicher und leichter zu verwalten werden.


12. Debugging
Debugging ist in der Programmierung ein wichtiger Bestandteil. Und sogar Excel hat einige interessante Debugging-Werkzeuge integriert. Mein Lieblingswerkzeug ist die sogenannte Formelüberwachung. (Ansicht/Symbolleisten/Formelüberwachung)
Mithilfe der Formelauswertung kann man sehen, wie die Formel in einer Zelle abgearbeitet wird und welche Zwischenergebnisse entstehen. Dadurch kann man schnell einen Fehler in einer langen und komplizierten Formel bemerken und ihn gezielt ausbessern.


Beispiel (siehe 2. Syntax): "In Zelle A1 will man einen Verweis auf eine Zelle machen, die in A2 angegben ist"
A1: =INDIREKT(A2)
A2: ="A3"
A3: =3
Ergebnis in A1: 3
Formelauswertung für A1:
Schritt 1: =INDIREKT(A2)
Schritt 2: =INDIREKT("A3")
Schritt 3: =A3
Schritt 4: =3
Ergebnis in A1: 3


Doch es gibt auch noch andere Möglichkeiten, die die Formelüberwachung bietet. Man kann unter anderem die Spuren auf Nachfolger und Vorgänger einer Zelle einblenden, wodurch man einen relativ genauen Überblick darüber bekommt, welche Zellen die aktuelle Zelle beeinflussen und welche Zellen, die aktuelle Zelle beeinflusst.

Natürlich existieren für Programmiersprachen viel weitreichendere Lösungen und Werkzeuge, jedoch spielen bei diesen auch viel mehr Faktoren eine Rolle als in Excel. (zB: Stack, Cookies, Sessions, Funktionsreihenfolge, Speicherallokation, Speicherfreigabe, Variablen, ...)

13. Zusammenfassung
Vorteile von Excel
  • gleichzeitig client- und serverseitig
  • gleichzeitig Frontend, Backend und Datenspeicher (EingabeVerarbeitungSpeicherungAusgabe)
  • einfach

Nachteile von Excel
  • keine Schleifen möglich
  • langsam
  • als Datenspeicher nur begrenzt einsetzbar
Während Excel also eher statisches Konstrukt ist, kann man mit Programmiersprachen weitere Konstrukte bauen und somit die Funktionalität immer weiter erhöhen. Dafür hat Excel eindeutig seine Stärken im Bereich der Benutzerfreundlichkeit.

Meiner Meinung nach ist Excel also ein ziemlich guter Einstieg in die Programmierung. Wenn man dann aber schon langsam an die Grenzen stößt (so wie es mir ergangen ist), dann kann man relativ schnell zu richtigen Programmiersprachen übergehen und dort seiner Kreativität freien Lauf lassen.

Keine Kommentare: