Anforderungen an die Ausgaben
Alle Excel-Dateien
Keine Formelfehler
- Jedes Excel-Modell MUSS OHNE Formelfehler ausgeliefert werden (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)
Vorhandene Vorlagen erhalten (beim Aktualisieren von Vorlagen)
- Vorhandene Formatierung, Stil und Konventionen STUDIEREN und GENAU beibehalten
- Nie standardisierte Formatierung auf Dateien mit etablierten Mustern aufzwingen
- Bestehende Vorlagenkonventionen haben IMMER Vorrang vor diesen Richtlinien
Finanzmodelle
Farbkodierungsstandards
Sofern nicht anders vom Benutzer oder der vorhandenen Vorlage angegeben
Branchenübliche Farbkonventionen
- Blaue Schrift (RGB: 0,0,255): Festeingaben und Zahlen, die der Benutzer für Szenarien ändern wird
- Schwarze Schrift (RGB: 0,0,0): ALLE Formeln und Berechnungen
- Grüne Schrift (RGB: 0,128,0): Verweise aus anderen Arbeitsblättern innerhalb derselben Arbeitsmappe
- Rote Schrift (RGB: 255,0,0): Externe Verweise auf andere Dateien
- Gelber Hintergrund (RGB: 255,255,0): Wichtige Annahmen, die Aufmerksamkeit benötigen, oder Zellen, die aktualisiert werden müssen
Zahlenformatierungsstandards
Erforderliche Formatregeln
- Jahre: Als Textzeichenfolgen formatieren (z. B. „2024“ nicht „2.024“)
- Währung: Format $#.##0 verwenden; Einheiten IMMER in Überschriften angeben („Umsatz ($ Mio.)“)
- Nullen: Zahlenformatierung verwenden, um alle Nullen als „-“ darzustellen, auch bei Prozentangaben (z. B. „$#.##0;($#.##0);-“)
- Prozentsätze: Standardformat 0,0% (eine Dezimalstelle)
- Multiplikatoren: Format 0,0x für Bewertungsmultiplikatoren (EV/EBITDA, KGV)
- Negative Zahlen: Klammern (123) verwenden, nicht Minus -123
Formelerstellungsregeln
Platzierung von Annahmen
- ALLE Annahmen (Wachstumsraten, Margen, Multiplikatoren usw.) in separate Annahmenzellen setzen
- Zellbezüge anstelle von fest codierten Werten in Formeln verwenden
- Beispiel: =B5*(1+$B$6) anstelle von =B5*1,05
Vermeidung von Formelfehlern
- Alle Zellbezüge auf Richtigkeit prüfen
- Auf „Off-by-one“-Fehler in Bereichen achten
- Konsistente Formeln über alle Prognosezeiträume sicherstellen
- Mit Grenzfällen testen (Nullwerte, negative Zahlen)
- Auf unbeabsichtigte Zirkelbezüge prüfen
Dokumentationsanforderungen für Festcodierungen
- Kommentare oder neben den Zellen (wenn am Ende einer Tabelle). Format: „Quelle: [System/Dokument], [Datum], [Spezifischer Verweis], [URL falls zutreffend]“
- Beispiele:
- „Quelle: Unternehmens-10K, GJ2024, Seite 45, Umsatzvermerk, [SEC EDGAR URL]“
- „Quelle: Unternehmens-10Q, Q2 2025, Anhang 99.1, [SEC EDGAR URL]“
- „Quelle: Bloomberg Terminal, 15.08.2025, AAPL US Equity“
- „Quelle: FactSet, 20.08.2025, Bildschirm Konsensschätzungen“
Erstellung, Bearbeitung und Analyse von XLSX-Dateien
Übersicht
Ein Benutzer kann Sie bitten, den Inhalt einer .xlsx-Datei zu erstellen, zu bearbeiten oder zu analysieren. Für verschiedene Aufgaben stehen Ihnen unterschiedliche Tools und Workflows zur Verfügung.
Wichtige Anforderungen
LibreOffice für die Neuberechnung von Formeln erforderlich: Sie können davon ausgehen, dass LibreOffice installiert ist, um Formelwerte mit dem Skript recalc.py neu zu berechnen. Das Skript konfiguriert LibreOffice beim ersten Lauf automatisch.
Daten lesen und analysieren
Datenanalyse mit pandas
Für Datenanalyse, Visualisierung und grundlegende Operationen verwenden Sie pandas, das leistungsstarke Datenmanipulationsfunktionen bietet:
import pandas as pd
# Excel lesen
df = pd.read_excel('datei.xlsx') # Standard: erstes Blatt
all_sheets = pd.read_excel('datei.xlsx', sheet_name=None) # Alle Blätter als Dict
# Analysieren
df.head() # Datenvorschau
df.info() # Spalteninformationen
df.describe() # Statistiken
# Excel schreiben
df.to_excel('ausgabe.xlsx', index=False)
Excel-Datei-Workflows
WICHTIG: Formeln verwenden, keine hartcodierten Werte
Verwenden Sie immer Excel-Formeln, anstatt Werte in Python zu berechnen und hart zu codieren. Dadurch bleibt die Tabelle dynamisch und aktualisierbar.
❌ FALSCH - Hartcodierte berechnete Werte
# Schlecht: In Python berechnen und Ergebnis hart codieren
total = df['Umsatz'].sum()
blatt['B10'] = total # Hartcodiert 5000
# Schlecht: Wachstumsrate in Python berechnen
wachstum = (df.iloc[-1]['Umsatz'] - df.iloc[0]['Umsatz']) / df.iloc[0]['Umsatz']
blatt['C5'] = wachstum # Hartcodiert 0,15
# Schlecht: Python-Berechnung für Durchschnitt
avg = sum(werte) / len(werte)
blatt['D20'] = avg # Hartcodiert 42,5
✅ RICHTIG - Excel-Formeln verwenden
# Gut: Excel die Summe berechnen lassen
blatt['B10'] = '=SUMME(B2:B9)'
# Gut: Wachstumsrate als Excel-Formel
blatt['C5'] = '=(C4-C2)/C2'
# Gut: Durchschnitt mit Excel-Funktion
blatt['D20'] = '=MITTELWERT(D2:D19)'
Dies gilt für ALLE Berechnungen - Summen, Prozentsätze, Verhältnisse, Differenzen usw. Die Tabelle sollte neu berechnen können, wenn sich die Quelldaten ändern.
Allgemeiner Workflow
- Tool auswählen: pandas für Daten, openpyxl für Formeln/Formatierung
- Erstellen/Laden: Neue Arbeitsmappe erstellen oder vorhandene Datei laden
- Ändern: Daten, Formeln und Formatierung hinzufügen/bearbeiten
- Speichern: In Datei schreiben
- Formeln neu berechnen (PFLICHT, WENN FORMELN VERWENDET WERDEN): Skript recalc.py verwenden
python recalc.py ausgabe.xlsx - Fehler überprüfen und beheben:
- Das Skript gibt JSON mit Fehlerdetails zurück
- Wenn
statuserrors_foundist,error_summaryauf spezifische Fehlertypen und -orte prüfen - Die identifizierten Fehler beheben und erneut berechnen
- Häufige zu behebende Fehler:
#REF!: Ungültige Zellbezüge#DIV/0!: Division durch Null#VALUE!: Falscher Datentyp in Formel#NAME?: Unbekannter Formelname
Neue Excel-Dateien erstellen
# openpyxl für Formeln und Formatierung verwenden
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
blatt = wb.active
# Daten hinzufügen
blatt['A1'] = 'Hallo'
blatt['B1'] = 'Welt'
blatt.append(['Zeile', 'von', 'Daten'])
# Formel hinzufügen
blatt['B2'] = '=SUMME(A1:A10)'
# Formatierung
blatt['A1'].font = Font(bold=True, color='FF0000')
blatt['A1'].fill = PatternFill('solid', start_color='FFFF00')
blatt['A1'].alignment = Alignment(horizontal='center')
# Spaltenbreite
blatt.column_dimensions['A'].width = 20
wb.save('ausgabe.xlsx')
Vorhandene Excel-Dateien bearbeiten
# openpyxl verwenden, um Formeln und Formatierung zu erhalten
from openpyxl import load_workbook
# Vorhandene Datei laden
wb = load_workbook('vorhanden.xlsx')
blatt = wb.active # oder wb['BlattName'] für ein bestimmtes Blatt
# Mit mehreren Blättern arbeiten
for blatt_name in wb.sheetnames:
blatt = wb[blatt_name]
print(f"Blatt: {blatt_name}")
# Zellen ändern
blatt['A1'] = 'Neuer Wert'
blatt.insert_rows(2) # Zeile an Position 2 einfügen
blatt.delete_cols(3) # Spalte 3 löschen
# Neues Blatt hinzufügen
neues_blatt = wb.create_sheet('NeuesBlatt')
neues_blatt['A1'] = 'Daten'
wb.save('modifiziert.xlsx')
Formeln neu berechnen
Excel-Dateien, die mit openpyxl erstellt oder geändert wurden, enthalten Formeln als Zeichenfolgen, aber keine berechneten Werte. Verwenden Sie das bereitgestellte Skript recalc.py, um Formeln neu zu berechnen:
python recalc.py <excel_datei> [zeitlimit_sekunden]
Beispiel:
python recalc.py ausgabe.xlsx 30
Das Skript:
- Richtet beim ersten Lauf automatisch das LibreOffice-Makro ein
- Berechnet alle Formeln in allen Blättern neu
- Durchsucht ALLE Zellen nach Excel-Fehlern (#REF!, #DIV/0! usw.)
- Gibt JSON mit detaillierten Fehlerorten und -anzahlen zurück
- Funktioniert sowohl unter Linux als auch unter macOS
Checkliste zur Formelüberprüfung
Schnelle Prüfungen, um sicherzustellen, dass Formeln korrekt funktionieren:
Wesentliche Überprüfung
- 2-3 Beispielbezüge testen: Vor dem Erstellen des gesamten Modells prüfen, ob sie die richtigen Werte abrufen
- Spaltenzuordnung: Bestätigen, dass Excel-Spalten übereinstimmen (z. B. Spalte 64 = BL, nicht BK)
- Zeilenversatz: Beachten, dass Excel-Zeilen 1-basiert sind (DataFrame Zeile 5 = Excel Zeile 6)
Häufige Fallstricke
- NaN-Behandlung: Auf Nullwerte mit
pd.notna()prüfen - Weit rechts liegende Spalten: Geschäftsjahresdaten oft in Spalten 50+
- Mehrere Übereinstimmungen: Alle Vorkommen durchsuchen, nicht nur das erste
- Division durch Null: Nenner vor Verwendung von
/in Formeln prüfen (#DIV/0!) - Falsche Bezüge: Sicherstellen, dass alle Zellbezüge auf die beabsichtigten Zellen zeigen (#REF!)
- Blattübergreifende Bezüge: Korrektes Format (Blatt1!A1) für die Verknüpfung von Blättern verwenden
Strategie zum Testen von Formeln
- Klein anfangen: Formeln erst an 2-3 Zellen testen, bevor sie breit angewendet werden
- Abhängigkeiten prüfen: Sicherstellen, dass alle in Formeln referenzierten Zellen existieren
- Grenzfälle testen: Null-, negative und sehr große Werte einbeziehen
Ausgabe von recalc.py interpretieren
Das Skript gibt JSON mit Fehlerdetails zurück:
{
"status": "success", // oder "errors_found"
"total_errors": 0, // Gesamtzahl der Fehler
"total_formulas": 42, // Anzahl der Formeln in der Datei
"error_summary": { // Nur vorhanden, wenn Fehler gefunden
"#REF!": {
"count": 2,
"locations": ["Tabelle1!B5", "Tabelle1!C10"]
}
}
}
Best Practices
Bibliotheksauswahl
- pandas: Am besten geeignet für Datenanalyse, Massenoperationen und einfachen Datenexport
- openpyxl: Am besten geeignet für komplexe Formatierung, Formeln und Excel-spezifische Funktionen
Arbeiten mit openpyxl
- Zellenindizes sind 1-basiert (row=1, column=1 bezieht sich auf Zelle A1)
data_only=Trueverwenden, um berechnete Werte zu lesen:load_workbook('datei.xlsx', data_only=True)- Warnung: Wenn mit
data_only=Truegeöffnet und gespeichert wird, werden Formeln durch Werte ersetzt und gehen dauerhaft verloren - Für große Dateien:
read_only=Truezum Lesen oderwrite_only=Truezum Schreiben verwenden - Formeln bleiben erhalten, werden aber nicht ausgewertet - verwenden Sie recalc.py, um Werte zu aktualisieren
Arbeiten mit pandas
- Datentypen angeben, um Inferenzprobleme zu vermeiden:
pd.read_excel('datei.xlsx', dtype={'id': str}) - Für große Dateien bestimmte Spalten lesen:
pd.read_excel('datei.xlsx', usecols=['A', 'C', 'E']) - Daten korrekt behandeln:
pd.read_excel('datei.xlsx', parse_dates=['datums_spalte'])
Richtlinien zum Code-Stil
WICHTIG: Beim Generieren von Python-Code für Excel-Operationen:
- Minimalen, prägnanten Python-Code ohne unnötige Kommentare schreiben
- Ausführliche Variablennamen und redundante Operationen vermeiden
- Unnötige print-Anweisungen vermeiden
Für Excel-Dateien selbst:
- Kommentare zu Zellen mit komplexen Formeln oder wichtigen Annahmen hinzufügen
- Datenquellen für fest codierte Werte dokumentieren
- Hinweise für wichtige Berechnungen und Modellabschnitte einfügen