Nein, in diesem Beitrag geht es nicht um Hafterleichterungen für Komfort gewöhnte Mitglieder der Cum-Ex-Fraktion. Es geht um Zellen einer Tabellenkalkulation, hier Excel.

Wenn man im Beta-Kanal von Office 365 angemeldet ist, kann man jetzt Python-Code direkt in Excel-Zellen schreiben. Was vorher (vielleicht) durch VBA möglich war, ist jetzt ohne den Umweg über das Erstellen eines VBA-Moduls (und der Änderung des Datei-Typs in *.xlsm) oder das wüste Verketten von Excel-Funktionen unmittelbar in der Zelle machbar.

Formal wird das Ganze in den Funktionsrumpf =PY() gepackt und dann interpretiert. Das Ergebnis steht dann wie gewohnt in der Zelle mit dem Funktionsaufruf, wobei man noch die Wahl zwischen der Python-Objekt-Darstellung und der Excel-Darstellung hat. Dazu wird im Hintergrund die Anaconda Python-Distribution installiert und geladen. Hier ein Beispiel:

Um bewegliche Feiertage zu ermitteln, muss man erst den Ostertermin berechnen. Das machte ich bei Office-Anwendungen bisher mit dem Gauß-Algorithmus in einer selbstgeschriebenen VBA-Funktion. Jetzt geht das so:

Python-Eingabe aktivieren:

In die Excel-Zelle(n) die Python-Funktion codieren (ohne Python-Funktionskopf, der steckt implizit in =PY())

Excel mit Python-Code.

In der Bearbeitungsleiste kann dazu mehrzeilig gearbeitet werden. Jede Code-Zeile wird mit EINGABE abgeschlossen, die Eingabe insgesamt mit Strg + EINGABE.

Der Zugriff auf Excel-Zellen erfolgt nicht mehr wie gewohnt durch eine direkte Zell-Referenz, sondern mit der Funktion xl(), die Übergabe des Ergebnisses an Excel aber, wie gewohnt und schon erwähnt, in der Zelle, die den Python-Funktionsaufruf enthält.

Für jemand, der bisher nicht in Python programmiert hat, sei der Code kurz erläutert (# leitet in Python einen Kommentar ein):

import datetime  # Modul datetime importieren
import dateutil  # Modul dateutil importieren
from dateutil.easter import *  # Alle Methoden des easter-Objekts importieren
# Mit der Methode easter und dem Wert in Zelle A2 (Jahr) den orthodoxen Ostertermin berechnen
dateutil.easter.easter(xl("$A2"), method=2)

Es kann also neben dem gregorianischen auch noch der julianische und der orthodoxe Ostertermin berechnet werden. (Der Julianische Kalender war der Vorgänger des Gregorianischen, galt aber in nicht-katholischen Ländern noch lange nach der Kalenderreform von 1582, weshalb man die Revolution in Russland immer noch Oktoberrevolution nennt, obwohl bei uns schon November war.)

Natürlich ist das ein simples Beispiel. Seine Stärken spielt das neue Feature erst bei umfangreichen Datenanalysen, etwa mit den Bibliotheken pandas und matplotlib aus.