Die PODC-Statistik funktionierte bereits in Excel. Deshalb bestand die Aufgabe nicht darin, die vorhandene Logik noch einmal neu zu programmieren. Die bessere Lösung war eine saubere Brücke: Excel rechnet – die Website präsentiert.

Die Idee: vorhandene Stärke behalten
Die PODC-Statistik war kein leeres Blatt. In Excel und Power Query existierten bereits die fachlichen Berechnungen für Spielerstatistiken, Liga-Auswertungen und weitere Wettbewerbe. Genau deshalb wäre ein kompletter Neubau im Browser die falsche Richtung gewesen.
Wenn Excel dieselbe Statistik korrekt berechnet und JavaScript sie anschließend noch einmal nachbaut, entstehen zwei Wahrheiten. Jede Regeländerung müsste an zwei Stellen gepflegt werden, und bei Abweichungen wäre zunächst unklar, welches Ergebnis stimmt. Also wurde die Rolle der Website bewusst begrenzt: Sie ist Präsentationsschicht, nicht zweites Rechenzentrum.
Ausgangslage: viele Daten, aber keine öffentliche Webdarstellung
Die Daten entstehen in mehreren Excel- und Power-Query-Bereichen. Dazu gehören Spielerstatistiken, Ligatabellen und Ligabegegnungen sowie Grand Slam und Competition. Die Website sollte diese Informationen übersichtlich zugänglich machen, ohne dass für jede Veröffentlichung Dateien manuell exportiert oder Screenshots gepflegt werden müssen.
Ein wichtiger praktischer Punkt war außerdem die spätere Pflege. Der normale Ablauf sollte weiterhin in Excel stattfinden: Daten aktualisieren, fachlich kontrollieren, veröffentlichen. Die Person, die die Statistik pflegt, soll nicht zusätzlich an HTML-Dateien arbeiten müssen.
Planung und Anforderungen
- Excel und Power Query bleiben die fachliche Quelle.
- Ein veröffentlichter Datenstand soll automatisch als strukturierte Webdaten bereitstehen.
- Die Webseite soll statisch bleiben und keine unnötige Datenbank benötigen.
- Bestleistungen sollen aus den vorhandenen Daten entstehen, nicht als manuelle Screenshots.
- Grand Slam, Competition und Hall of Fame sollen eigenständige, direkt erreichbare Bereiche sein.
- Eine abgeschlossene Saison muss dauerhaft in der Hall of Fame erhalten bleiben.
- Ein fehlgeschlagener Teil einer Veröffentlichung darf nicht stillschweigend als Gesamterfolg gelten.
- Upload-Zugangsdaten dürfen nicht im öffentlichen Webbestand liegen.
Umsetzung: ein klarer Datenweg
Nach der fachlichen Prüfung erzeugt das VBA-Modul aus den Excel-Daten genau einen JSON-Datensatz. Dieser wird per HTTPS an die Webziele übertragen. Serverseitig wird der Datensatz geprüft, der bisherige Stand gesichert und die neue stats.json geschrieben. Die statischen Seiten laden anschließend genau diesen Stand.
Das hat einen großen Vorteil bei der Fehlersuche: Stimmt eine Zahl nicht, lässt sich der Weg Schritt für Schritt prüfen. Ist sie bereits in Excel falsch, liegt das Problem in der Datenbasis. Ist Excel korrekt, aber JSON falsch, liegt es im Export. Ist JSON korrekt und die Anzeige falsch, liegt es in der Weboberfläche.
Warum JSON hier gut passt
- Die Datei ist kompakt, portabel und leicht zu kontrollieren.
- Die öffentliche Weboberfläche bleibt schnell und weitgehend statisch.
- Excel und Website sind technisch getrennt, aber über eine klar definierte Datenstruktur verbunden.
- Die Webdateien können unabhängig vom aktuellen Statistikstand weiterentwickelt werden.
Aus einer Excel-Statistik werden mehrere Webbereiche
Die Hauptseite bündelt die regelmäßig genutzten Auswertungen. Weitere Wettbewerbe haben eigene Seiten bekommen, damit die Navigation übersichtlich bleibt.
Liga und Spieler
Liga-Auswertung, Bestleistungen, Spielerstatistiken und Einzelspieler-Vergleich. Die Startansicht bleibt die Liga-Auswertung.
Grand Slam, Competition, Hall of Fame
Die drei Bereiche sind separat direkt erreichbar und untereinander mit der Liga-Statistik verlinkt.
Bestleistungen ohne Screenshot-Pflege
Die Bestleistungen werden dynamisch aus den veröffentlichten Statistikdaten ermittelt. Filter nach Liga, Kategorie und Umfang machen aus einem früher eher statischen Ergebnisbereich eine echte Auswertung. Dasselbe gilt für Einzelspiel-Rekorde.
Competition bleibt flexibel
Competition war technisch ein Sonderfall, weil die zugrunde liegenden Power-Query-Daten nicht immer in exakt derselben Excel-Form vorliegen. Der Export wurde deshalb so gebaut, dass er sowohl mit einer vorhandenen Tabelle als auch über einen versteckten Hilfsweg arbeiten kann. Auf der Webseite werden neue Turnierspalten dynamisch erkannt, statt für jedes zusätzliche Turnier HTML umbauen zu müssen.
Hall of Fame: aktuelle Daten sind nicht automatisch Geschichte
Die normale stats.json beschreibt den aktuellen Stand. Für eine Hall of Fame reicht das nicht, denn abgeschlossene Saisons müssen dauerhaft erhalten bleiben. Deshalb besitzt die Hall of Fame eine getrennte Historie.
Die laufende Saison kann auf Wunsch für die Anzeige zugeschaltet werden, verändert dadurch aber nicht die gespeicherte Vergangenheit. Technische oder nicht reguläre Einträge werden in der Darstellung gefiltert, ohne die historische Datei destruktiv umzuschreiben.
Ein Saisonabschluss ist ein eigener Vorgang
Zum Saisonende wird zuerst Excel vollständig aktualisiert und fachlich geprüft. Dann wird der finale Datenstand noch einmal veröffentlicht und anschließend archiviert. Erst wenn die Archivierung erfolgreich war, wird die neue Saison in Excel eingestellt.
Der Archivvorgang ist so gebaut, dass ein erneuter Versuch nach einem Teilfehler keine Saison doppelt zählt. Genau solche Details machen aus einer Demo eine Lösung, die man wirklich weiterbenutzen kann.
Was nicht sofort funktioniert hat
Power Query braucht je nach Datenlage unterschiedlich lange. Starre Wartezeiten und pauschale Refresh-Schleifen erwiesen sich als keine gute Grundlage. Aktualisierung und Veröffentlichung wurden deshalb bewusst getrennt.
Der Export musste sowohl mit einer echten Tabelle als auch mit einer nur als Verbindung vorhandenen Power-Query-Abfrage umgehen können.
Mit wachsendem Umfang wurde sie als eigene Seite klarer. Die Historie bekam außerdem eine eigene persistente Datei statt nur den aktuellen Saisonstand zu verwenden.
Im Webpaket existierten historische Dateien und Restcode, die für den heutigen Datenweg nicht mehr maßgeblich sind. Die Projektdokumentation hält deshalb ausdrücklich fest, welche Quellen tatsächlich gelten.
Ergebnis
Die PODC-Webstatistik ist heute eine statische Weboberfläche für eine weiterhin in Excel berechnete Statistik. Ein VBA-Modul veröffentlicht den geprüften Stand automatisiert als JSON. Die Webseite stellt Liga, Spieler, Bestleistungen und Wettbewerbe dar; die Hall of Fame verwaltet zusätzlich eine dauerhafte Saisonhistorie.
Der entscheidende Gewinn ist nicht, dass Excel durch „Web“ ersetzt wurde. Der Gewinn ist, dass jede Schicht genau das macht, was sie gut kann: Excel rechnet, der Export transportiert, der Server prüft und speichert, die Webseite stellt dar.
Was ich aus dem Projekt mitnehme
- Eine funktionierende Excel-Lösung muss für eine Website nicht weggeworfen werden.
- Doppelte Fachlogik vermeiden: eine Quelle, eine Wahrheit.
- Datenexport, Speicherung und Darstellung sauber voneinander trennen.
- Historische Daten brauchen eine andere Lebensdauer als der aktuelle Stand.
- Automatisierung ist nur dann gut, wenn Teilfehler erkennbar und Wiederholungen sicher sind.
- Starre Wartezeiten sind kein Ersatz für einen tatsächlich abgeschlossenen Power-Query-Refresh.
- „Funktioniert“ ist auch hier nicht dasselbe wie „fertig“ – gute Lösungen entstehen durch echte Nutzung und anschließende Vereinfachung.
PODC Webstatistik live ansehen ↗