Mal was anderes: Excel, das Nachrichtenportal

Artikelbild-374
Zwei exotische Funktionen machen aus Excel einen kleinen Nachrichtenticker
 

Heute wird es ganz wild:
Von den beiden Excel-Funktionen, die ich dir heute vorstellen werde, hast du mit allergrößter Wahrscheinlichkeit noch nie in deinem Leben gehört. Obwohl es sie schon seit vielen Jahren gibt, fristen sie ein armseliges Dasein in den Tiefen von Excel, unbeachtet von der kalten, bösen Welt…

Dabei muss ich zugeben, dass ich diese zwei Funktionen selbst auch lange nicht gekannt habe, geschweige denn, dass sich mir ein konkreter Anwendungsfall dafür erschlossen hätte. Das möchte ich heute ändern. Denn auch wenn diese Funktionen ziemlich exotisch sind, können sie in bestimmten Situation sehr nützlich sein.

Wie zum Beispiel für den Aufbau eines kleinen Nachrichtenportals.

Los geht’s!

Beispieldatei herunterladen
Beispieldatei herunterladen

Es geht um die Funktionen WEBDIENST und XMLFILTERN (Warnung: Diese Funktionen gibt es nur in den Windows-Versionen von Excel. Im Mac-Excel stehen sie leider nicht zur Verfügung)

Und: Kennst du die? Genau.

Die beiden Funktionen gibt es seit Excel 2013, also durchaus schon eine ganze Weile. Die Hilfeseite von Microsoft ist allerdings etwas zurückhaltend und kryptisch, was die Information dazu angeht. Beginnen wir daher am Anfang.

WEBDIENST

Das sagt die Hilfeseite: „Diese Funktion gibt Daten aus einem Webdienst im Internet oder Intranet zurück“. Na toll…

Vereinfacht gesagt lassen sich mit WEBDIENST einzelne, spezifische Informationen abrufen und im Arbeitsblatt ausgeben. Das ist zum Beispiel dann hilfreich, wenn man über öffentlich zugängliche API’s (API = Application Programming Interface, auf Deutsch: Programmierschnittstelle) auf Daten im Web zugreifen möchte:

  • Wetterinformationen
  • Börsendaten
  • Nachrichten
  • Produktinfos

und vieles mehr.

Die allgemeine Syntax für die Funktion lautet:
=WEBDIENST(URL)

Die URL ist die Adresse eines Webdienstes, der aufgerufen werden soll. Zurückgeliefert wird dann ein strukturierter Datenstrom, beispielsweise im XML- oder JSON-Format. Abhängig davon, was der betreffende Webdienst eben anbietet.

Nun bieten Websites einen sogenannten RSS-Feed an und man kann sie mit speziellen Programmen, sogenannten Feed-Readern, abonnieren. Damit lassen sich dann bequem an einer zentralen Stelle beispielsweise eine Vielzahl von interessanten Nachrichtenseiten, Blogs etc. verfolgen.

Diese Feeds haben eine eigene URL, also eine Webadresse. Ich habe mir für diesen Artikel beispielhaft die Website der Süddeutschen Zeitung herausgepickt.

Die Feeds sind zu finden unter der Basisadresse „https://rss.sueddeutsche.de/rss/“, gefolgt vom Namen des jeweiligen Ressorts. Also beispielsweise „https://rss.sueddeutsche.de/rss/Alles“ für einen allgemeinen Überblick oder „https://rss.sueddeutsche.de/rss/Sport“ für Sportnachrichten.

Wenn man diese Adressen in einem normalen Webbrowser eingibt, erhält man eine sehr spartanische und schwer lesbare Anzeige:

XML-Ausgabe eines RSS-Datenstroms

XML-Ausgabe eines RSS-Datenstroms


Genau deshalb gibt es erwähnten speziellen Feed-Reader-Programme.

Oder man nutzt halt Excel dafür.

Übergibt man nämlich diese Feed-Adresse an die WEBDIENST-Funktion, erhält man die Daten direkt in einer einzelnen Zelle im Arbeitsblatt:

WEBDIENST gibt den Datenstrom in einer einzelnen Zelle aus

WEBDIENST gibt den Datenstrom in einer einzelnen Zelle aus


Zugegeben: Für mich als Anwender ist das noch nicht sehr prickelnd, da unleserlich. Und genau da kommt unsere zweite Funktion zum Einsatz!

XMLFILTERN

Diese Funktion erwartet 2 Parameter:
=XMLFILTERN(xml, XPath)

Der erste Parameter soll nun der Verweis auf die zuvor verwendete WEBDIENST-Funktion in B3 sein.
Aber was ist der XPath?

Der XPath oder der XML Path dient dem Adressieren von Knoten in XML-Dokumenten und benutzt hierzu Pfaden ähnliche Ausdrücke. Wer sich detaillierter damit beschäftigen möchte, dem lege ich die sehr guten Beschreibungen des SELFHTML-Wikis ans Herz.

Schauen wir uns das Bild oben mit der XML-Struktur des RSS-Feeds von der SZ mal genauer an. Jeder Nachrichtenbeitrag befindet sich innerhalb eines „items“. Und darunter liegen dann weitere Elemente oder Knoten, wie z.B. „title“, „description“, „link“, „pubDate“ und ein paar weitere.

Einzelnen Elemente innerhalb der XML-Struktur

Einzelnen Elemente innerhalb der XML-Struktur

Und genau auf solche einzelnen Elemente kann man jetzt gezielt zugreifen. So werden die Nachrichtentitel wie folgt abgerufen:
=XMLFILTERN(B3;"//item/title")

Das Feld "title" wird aus dem Ergebnis von WEBDIENST herausgelesen

Das Feld „title“ wird aus dem Ergebnis von WEBDIENST herausgelesen

WICHTIG:
Wer eine aktuelle Excel-Version (Excel 2021, 2024 oder Microsoft 365) einsetzt, kann die Funktion einfach so eingeben und die Ergebnisse laufen automatisch in so viele Zeilen über, wie eben nötig sind.

Wer hingegen eine ältere Version im Einsatz hat, muss diese Formel als Array-Funktion eingeben. Das heißt, es müssen erst einmal „auf Verdacht“ mehrere Zeilen markiert und die Funktion dann mit Strg+Alt+Eingabe abgeschlossen werden.

Und jetzt lassen sich Schritt für Schritt weitere Elemente abgreifen.

Veröffentlichungsdatum:
=XMLFILTERN(B3;"//item/pubDate")
Webadresse des jeweiligen Nachrichtenartikels:
=XMLFILTERN(B3;"//item/link")

Weitere XML-Elemente werden abgegriffen

Weitere XML-Elemente werden abgegriffen

Auf diesem Weg kann man sich in Excel also ein kleines Nachrichtenportal einrichten.

(Einen komplett anderen Anwendungsfall für XMLFILTERN findest du übrigens am Ende des Artikels Alle Formeln auflisten)

Mehr Komfort und Feinschliff

Auch wenn die URLs zu den eigentlichen Nachrichtenseiten jetzt in einer eigenen Spalte vorliegen, lassen sie sich leider noch nicht direkt durch einen Klick aufrufen. Das werden wir einfach mit der HYPERLINK-Funktion korrigieren. In der Spalte A richten wir einen klickbaren Link für die einzelnen Beiträge ein:
=HYPERLINK(D5#;"Link")

HYPERLINK erzeugt einen anklickbaren Link

HYPERLINK erzeugt einen anklickbaren Link

Die Nutzer von neuen Excel-Versionen geben die HYPERLINK-Funktion wie oben gezeigt mit dem #-Zeichen hinter der Zelladresse D5 ein, die Formel läuft dann automatisch über. In älteren Excel-Versionen lässt man die Raute weg und kopiert anschließend die Formelzelle manuell nach unten.

Danach öffnet ein Klick auf den entsprechenden Link in Spalte A die betreffende Nachrichtenseite sofort im Browser.

Jetzt wollen wir aber noch etwas mehr Flexibilität und Komfort, was die Nachrichten-Kategorie angeht. Die SZ bietet auf ihrer Website verschiedene Ressorts an, die jeweils auch eigene RSS-Feeds haben. Praktischerweise entspricht der Ressortname fast immer direkt dem letzten Teil der Feed-URL

  • Wirtschaft: https://rss.sueddeutsche.de/rss/Wirtschaft
  • Sport: https://rss.sueddeutsche.de/rss/Sport
  • Politik: https://rss.sueddeutsche.de/rss/Politik

und so weiter.

Über ein Dropdown-Feld in Zelle B2 soll daher das gewünschte Ressort ausgewählt und in die URL übernommen werden, die dann mit WEBDIENST und in Folge mit XMLFILTERN ausgewertet wird.

Die Ressorts werden irgendwo in einer Liste eingegeben:

Die Ressorts als Quelle für ein Dropdown-Feld

Die Ressorts als Quelle für ein Dropdown-Feld


In der Zelle B2 unterhalb der bisherigen URL wird dann über „Daten | Datenüberprüfung“ ein Dropdown-Feld eingerichtet, welches auf diese Liste verweist. Aus der ursprünglichen URL in B1 wird dann der letzte Teil entfernt, denn dieser kommt ja jetzt über die Auswahl in B2:
Die Feed-URL wird angepasst

Die Feed-URL wird angepasst

Jetzt muss noch die WEBDIENST-Funktion in B3 angepasst werden, so dass B1 und B2 kombiniert werden:
=WEBDIENST(B1&B2)

Und schon können wir über das Dropdown-Feld das gewünschte Ressort auswählen und in den Zellen darunter werden die entsprechenden Nachrichten ausgegeben:

WEBDIENST setzt die neue URL aus zwei Zellen zusammen

WEBDIENST setzt die neue URL aus zwei Zellen zusammen

Nicht schlecht, oder?

Jetzt musst du dir nur noch die für dich relevanten Feed-URLs der gewünschten Webseiten suchen (die Suchmaschine oder der Chat-Bot deines Vertrauens stehen gerne zur Verfügung) und kannst dir mit wenig Aufwand ein maßgeschneidertes Nachrichtenportal in Excel einrichten.

Einschränkungen

Auch wenn du jetzt vielleicht gleich loslegen möchtest, muss ich dich auf ein paar Einschränkungen hinweisen.

Dass die beiden Funktionen nicht in Excel für den Mac verfügbar sind, hatte ich schon erwähnt.
Und die angezeigten Nachrichten aktualisieren sich leider nicht in Echtzeit. Damit du neuesten Nachrichten abgerufen werden, gibt es zwei Möglichkeiten:

  • Entweder du wählst die Zelle mit der URL des Datenstroms aus (in meinem Beispiel also B1), schaltest mit F2 oder einem Doppelklick in den Bearbeitungsmodus und drückst dann ohne irgendwelche Änderungen die Eingabetaste
  • Oder du machst dasselbe mit der Zelle, in der die WEBDIENST-Funktion steht (hier also B4)
  • Oder du wählst im Dropdown-Feld einfach ein anderes Ressort aus. Dadurch erhält die WEBDIENST-Funktion eine neue URL und liest diese ein

Nur dann werden etwaige neue Nachrichten abgerufen und angezeigt. Eine „richtiger“ Nachrichten- oder Börsenticker lässt sich (ohne VBA) damit also leider nicht einrichten.

Einige Webdienste liefern ihre Daten nicht im XML-Format, sondern im JSON-Format zurück. Auch wenn die WEBDIENST-Funktion auch das JSON-Format akzeptiert, müssen für das nachgelagerte XMLFILTERN die Daten zwingend im XML-Format vorliegen. JSON klappt hier leider nicht.

Die WEBDIENST-Funktion ist auch nicht für komplexe Zugriffe auf Webportale geeignet, die mehrstufige oder komplexe Login- und Anmeldeprozesse erfordern oder falls du größere Datenmengen abrufen möchtest, die vielleicht obendrein noch bereinigt werden müssen. Aber dafür gibt es ja Power Query.

Du möchtest in einer strukturierten Einführung den Einstieg in Power Query finden? Dann wäre vielleicht mein Power Query-Einsteiger-Kurs etwas für dich!
Du hast den Einstieg schon hinter dir und möchtest jetzt das nächste Level erklimmen? Dann schau dir meinen Fortgeschrittenen-Kurs Power Query-Praxisfälle an!

Fazit

Keine Frage, WEBDIENST und XMLFILTERN sind ziemlich exotisch. Für komplexere Datenabrufe aus dem Web wird man weiterhin auf Power Query zurückgreifen.

Benötigt man jedoch nur kleine Datenhäppchen aus einem RSS-Feed und kann mit den oben beschriebenen Einschränkungen leben, dann ist die Kombination der gezeigten Funktionen sicherlich eine interessante Alternative.

Wie sieht es bei dir aus:
Kanntest du diese Funktionen schon und hast du vielleicht konkrete eigene Anwendungsfälle gefunden? Dann lass es uns in den Kommentaren wissen!

 

Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert