Excel-Wissen & VBA vertiefen mit ChatGPT (OpenAI)

ChatGPT von OpenAI hat in wenigen Tagen und Wochen für Furore gesorgt und die Massen begeistert sowie spannende & kontroverse Diskussionen entfacht. Die Anwendungsfälle, wo künstliche Intelligenz (Artificial Intelligence) eingesetzt werden kann, wurden vielen Personen bewusster und greifbarer - und insbesondere auch zugänglicher!

Ein Twitter-Thread von Joe Speiser zeigt 8 mögliche Wege auf, wie ChatGPT eingesetzt und viele Stunden an mühsamer Arbeit für unterschiedliche Tätigkeiten ersparen kann (Sprache: Englisch). Dies sind einige wichtige Aspekte, die Du jederzeit anwenden kannst.

Recherche & Fragen

Wie bislang auf Google können wir den Assistenten zur Recherche und bei Fragen & Unklarheiten konsultieren. Dies ist ein Beispiel, wie man ein Säulen- und Liniendiagramm in Excel erstellt:

"Wie erstelle ich ein kombiniertes Säulen- und Liniendiagramm in Excel?"

Um ein kombiniertes Säulen- und Liniendiagramm in Excel zu erstellen, folgen Sie diesen Schritten:

  1. Öffnen Sie die Excel-Arbeitsmappe, in der Sie das Diagramm erstellen möchten.
  2. Wählen Sie die Daten aus, die im Diagramm dargestellt werden sollen.
  3. Klicken Sie auf der Registerkarte "Einfügen" im Bereich "Diagramme" auf "Säulen-Liniendiagramm".
  4. Wählen Sie das gewünschte Diagrammformat aus dem Dropdown-Menü aus.
  5. Klicken Sie auf "OK", um das Diagramm zu erstellen.

Sie können das Diagramm anschließend noch anpassen, indem Sie auf die einzelnen Elemente des Diagramms klicken und die Formatierungsoptionen in der Symbolleiste auf der Registerkarte "Format" verwenden. Sie können auch auf die Diagrammachse klicken und die Achsenoptionen in der Symbolleiste auf der Registerkarte "Format" anpassen.

Schreiben / Kodierung von Makros (und weiteren Skripts)

Einer der markantesten Ansätze scheint die Möglichkeit, innert Sekunden ganze Prozeduren (Makros / Skripts) in unterschiedlichen Programmiersprachen verfassen zu lassen. Das nachfolgende Beispiel - etwas simples, um die Länge des Blog-Beitrags nicht zu strapazieren - zeigt, wie eine Schleife (For Each-Loop) durch 10 Einträge iteriert:

"Code a For Each Loop in Excel VBA with 10 Iterations."

Hier ist ein Beispiel für eine For Each-Schleife in Excel VBA mit 10 Iterationen:

Sub ForEachLoopExample()

'Declare variables Dim item As Variant Dim items As Variant

'Set items to be looped through items = Array("item1", "item2", "item3", "item4", "item5", "item6", "item7", "item8", "item9", "item10")

'Loop through items For Each item In items 'Execute code for each item in the loop Debug.Print item Next item

End Sub

In diesem Beispiel wird die Schleife durch ein Array von Zeichenfolgen durchlaufen, aber Sie können auch andere Arten von Objekten oder Variablen verwenden. Die Aktionen, die innerhalb der Schleife ausgeführt werden, können auch angepasst werden. Sie können zum Beispiel Werte in Zellen schreiben oder Diagramme erstellen, während die Schleife durchläuft.

Wissens-Abfragen / Lern-Hilfe

Wir können ChatGPT dazu verwenden, unser eigenes Verständnis abzufragen (quasi Prüfungsfragen zu formulieren). Das liefert weitere Bereiche, die man allenfalls (wiederum mit der Unterstützung von OpenAI?!) weiter erkunden & vertiefen kann. Es lassen sich auch Bücher und einzelne Kapitel zusammenfassen respektive darüber Fragen formulieren. Dies ist ein Beispiel zu 20 generierten Fragen zu Excel VBA:

"Ask 20 Questions in German about Excel VBA."

  1. Was ist der Unterschied zwischen Excel VBA und Excel-Makros?
  2. Wie schreibe ich eine Schleife in Excel VBA?
  3. Wie kann ich in Excel VBA eine Variablen deklarieren und ihr einen Wert zuweisen?
  4. Wie kann ich in Excel VBA eine Funktion erstellen?
  5. Wie kann ich in Excel VBA auf den Inhalt einer Zelle oder eines Bereichs zugreifen?
  6. Wie kann ich in Excel VBA ein Dialogfenster öffnen und auf Benutzereingaben reagieren?
  7. Wie kann ich in Excel VBA eine Bedingung erstellen und entsprechend handeln?
  8. Wie kann ich in Excel VBA auf andere Arbeitsmappen oder andere Anwendungen zugreifen?
  9. Wie kann ich in Excel VBA Fehler abfangen und entsprechend handeln?
  10. Wie kann ich in Excel VBA Events behandeln, z.B. das Öffnen oder Schließen einer Arbeitsmappe?
  11. Wie kann ich in Excel VBA auf die Ribbon-Menüleiste zugreifen und Befehle ausführen?
  12. Wie kann ich in Excel VBA auf andere Objekte in der Arbeitsmappe zugreifen, z.B. auf Diagramme oder Formulare?
  13. Wie kann ich in Excel VBA auf andere Benutzer im Netzwerk zugreifen und ihre Daten abfragen?
  14. Wie kann ich in Excel VBA eine Web-Anfrage senden und auf die Antwort reagieren?
  15. Wie kann ich in Excel VBA Dateien erstellen, lesen und schreiben?
  16. Wie kann ich in Excel VBA benutzerdefinierte Dialoge erstellen und anzeigen?
  17. Wie kann ich in Excel VBA benutzerdefinierte Funktionen für andere Benutzer bereitstellen?
  18. Wie kann ich in Excel VBA benutzerdefinierte Befehle und Menüpunkte erstellen?
  19. Wie kann ich in Excel VBA auf externe Datenquellen wie Datenbanken oder XML-Dateien zugreifen?
  20. Wie kann ich in Excel VBA meine VBA-Code-Module organisieren und verwalten?

Zellen mit Hyperlinks erkennen und hervorheben

Excel wird für alle erdenklichen Auswertungen und Datenabgleiche verwendet. In diesem Beitrag stelle ich Dir zwei Möglichkeiten vor, um einen Zelleninhalt auf Hyperlinks zu prüfen.

In vorherigen Veröffentlichungen haben wir mit Formeln wie =ZELLE() oder über Wege mit =ZELLE.ZUORDNEN() Inhalte von Zellen interpretiert. Etwas ähnliches wurde mit bedingten Formatierungen aufgezeigt (z.B. zur Einfärbung einer Zeile, basierend auf deren Inhalte).

Ein Hyperlink kann auf zwei Arten in einer Excel-Tabelle hinterlegt werden: Via der Formel =HYPERLINK() oder durch Eingabe einer Websiten-URL. Den ersten Fall könnte mit der Formel "=ISTFORMEL()" überprüft werden und würde "WAHR" retournieren. Das könnte je nach Datengrundlage für den Auswertungszweck bereits ausreichen. Falls es sich jedoch um einen einfachen Eintrag handelt oder die Datei andere Formeln und Angaben beinhaltet, reicht dieser Ansatz nicht aus. Zur Orientierung habe ich hier eine kleine Beispieltabelle mit unterschiedlichen Fällen:

ZellenMitHyperlinks

Die Spalte A beinhaltet diverse Varianten:

  • Reguläre Texte (Titel), Zellen A2, A5 und A8;
  • Links auf Websiten (ohne Formel "HYPERLINK"!), Zellen A3, A6 und A9;
  • Mittels Formel "=HYPERLINK()" hinterlegter Link, Zelle A4;
  • fälschlicherweise als Link formatierter Text, Zelle A7.

Auslesen von Hyperlinks via Makro (VBA)

Um die eingetragenen Hyperlinks zu identifizieren, benötigen wir Makrounterstützung. In einer For-Each-Schleife gehen wir durch jede Zelle durch; ohne die Tabelle dynamisch (d.h. bei mehr oder weniger Zeileninhalten direkt zu reagieren), setzen wir:

For i = 2 To 9
[Weiterer Code folgt sogleich...]
Next

Damit durchläuft unsere Prozedur die Zeilen 2 bis 9. Innerhalb der For-Each-Schleife prüfen wir, ob (und wie viele) Hyperlinks die aktuelle Zelle der Spalte A (Spalten-Nummer 1) beinhaltet. Dazu verwenden wir:

For i = 2 To 9

If Cells(i, 1).Hyperlinks.Count = 1 Then
Cells(i, 3) = "LINK!"
End If

Next

Sollte also ein Hyperlink in der entsprechenden Zelle eingetragen worden sein, trägt das Makro in Spalte C den Hinweis "LINK!" ein. Der "Count" müsste im Falle eines Links immer 1 ergeben, weshalb die If-Prüfung das gewünschte Resultat liefert. Ich kann mir keinen Fall vorstellen, bei dem mehrere Hyperlinks in der Zelle enthalten sein sollten; ansonsten wäre die Prüfung "[...].Hyperlinks.Count >= 1 Then" sicherer.

Format einer Zelle auslesen und Zeile einfärben

Ein vielbesuchter Beitrag hier auf Excelblog.ch illustriert, wie sich eine ganze Zeile mit bedingten Formatierungen einfärben lässt (siehe Ganze Zeile einfärben (bedingte Formatierung)). Darin wird dargestellt, wie aufgrund einer Zellen-Angabe eine gesamte Zeile farbig hervorgehoben werden kann. Dabei wird meist nach einem bestimmten Text gesucht. In diesem Beitrag stelle ich Dir eine weitere Möglichkeit dar, um auf das Format einer Zelle einzugehen und eine entsprechende Einfärbung zu bewirken.

Für das Einlesen des aktuellen Zellenformats verwenden wir die Formel "ZELLE". In einem anderen Post wurde diese Formel bereits verwendet, um den aktuellen Tabellenblatt-Namen auszulesen (Mittels Formel den Tabellenblatt-Name ausgeben). Gehen wir zuerst auf die Formel im Einzelnen ein, anhand eines Beispiels:

Füge in der Zelle "A1" einen beliebigen Wert ein, zum Beispiel ein Datum wie 17.05.2022. Füge dann die untenstehende Formel in eine beliebige Zelle ein (z.B. "A2"), um das Format der Zelle "A1" auszulesen:

=ZELLE("format";A1)

Falls in "A1" tatsächlich ein Datum steht, erhältst Du "D1" als Formel-Resultat. Ändere nun das Format der Zelle "A1", beispielsweise zu Standard. Beachte: Das Formel-Resultat verändert sich nicht umgehend (eine technische Anmerkung: Obschon unter Formeln die Berechnungsoptionen auf "Automatisch" eingestellt sind). Aktualisiere die "ZELLE"-Formel erneut (gehe dafür in den "Bearbeitungsmodus" und bestätige die Formel mit der Enter-Taste erneut. Nun wird Dir für die "Standard-Formatierung" ein "S" ausgegeben.

Weitere Format-Optionen und Formel-Resultate

Schauen wir uns einige weitere Optionen an, teste gerne auch eigene Fälle und aktualisiere jeweils die "ZELLE"-Formel, um das Resultat zu sehen:

Formel ZELLE format

Beachte ein Muster bei Zahlen oder Prozentwerten und deren Dezimalstellen: Der Zähler erhöht sich jeweils, wobei "P" für Prozent (percentage) steht; "F" repräsentatiert "figure" (Engl.: Zahl).

Anwendung zur Einfärbung einer Zelle oder gesamten Zeile

Mit diesen Vorkenntnissen können wir nun eine bedingte Formatierung bei der Zelle selbst hinterlegen, in unserem Beispiel die Zelle "A1". Gehe dazu via "Start" → "Bedingte Formatierung" auf "Neue Regel...". Wähle dort die unterste Option "Formel zur Ermittlung der zu formatierenden Zelle verwenden" und füge die nachfolgende Formel ein:

=ZELLE("format";A1)="D1"

Wir wissen ja, dass wir im Falle eines Datums (17.05.2022) "D1" als Formel-Resultat zurückerhalten. Wir prüfen demnach, ob die Zelle A1 entsprechend formatiert ist und färben die Zelle daraufhin grün ein:

Formatierungsregel ZELLE Format

Um eine gesamte Zeile einzufärben, basierend auf der Angabe in Spalte "A", müsstest Du die Formel leicht anpassen, mit einem Dollarzeichen vor "A1":

=ZELLE("format";$A1)="D1"

Wir fixieren damit nur die Spalte, nicht die Zeile (da wir wahrscheinlich die bedingte Formatierung auf einen grösseren Bereich anwenden möchten; zum Beispiel von A1 bis F100. Setze dadurch in den bedingten Formatierungen unter "Regeln verwalten" den Bereich "=$A$1:$F$100" bei "Wird angewendet auf":

Formatierungsregel angewendet auf

Du kannst unter "Regel bearbeiten" Deine Formel jederzeit anpassen (z.B. auf "P2" für den gesuchten Prozentwert im Format "85.00%") sowie die Formatierung (Farbe, Schriftart, etc.) setzen.

Beachte: Wir haben oben erwähnt, dass die Formel bei einer Änderung der Formatierung erneut eingegeben werden muss. Das ist bei der bedingten Formatierung nicht der Fall. Solltest Du also einen Wert und dessen Formatierung anpassen (z.B. von einem Datum in einen Prozentwert umwandeln), wird umgehend die (bedingte) Formatierung zur Anwendung kommen.