Anforderungen an Ausgaben
Alle Excel-Dateien
Keine Formelfehler
- Jedes Excel-Modell MUSS OHNE Formelfehler (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?) ausgeliefert werden
Vorhandene Vorlagen erhalten (beim Aktualisieren von Vorlagen)
- Vorhandenes Format, Stil und Konventionen beim Ändern von Dateien STUDIEREN und EXAKT übernehmen
- Niemals standardisierte Formatierung auf Dateien mit etablierten Mustern anwenden
- Vorhandene Vorlagenkonventionen haben immer Vorrang vor diesen Richtlinien
Finanzmodelle
Farbcodierungsstandards
Sofern nicht anders vom Benutzer oder der vorhandenen Vorlage angegeben
Branchenübliche Farbkonventionen
- Blauer Text (RGB: 0,0,255): Hartcodierte Eingaben und Zahlen, die Benutzer für Szenarien ändern werden
- Schwarzer Text (RGB: 0,0,0): ALLE Formeln und Berechnungen
- Grüner Text (RGB: 0,128,0): Verweise, die aus anderen Arbeitsblättern derselben Arbeitsmappe ziehen
- Roter Text (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 in Kopfzeilen IMMER angeben („Umsatz ($Mio)")
- Nullen: Zahlenformatierung verwenden, um alle Nullen als „-" darzustellen, einschließlich Prozentangaben (z. B. „$#,##0;($#,##0);-")
- Prozentangaben: Standardmäßig Format 0,0 % (eine Dezimalstelle)
- Vielfache: Als 0,0x für Bewertungsmultiplikatoren formatieren (EV/EBITDA, KGV)
- Negative Zahlen: Klammern (123) verwenden, nicht Minus -123
Formelkonstruktionsregeln
Platzierung von Annahmen
- ALLE Annahmen (Wachstumsraten, Margen, Multiplikatoren usw.) in separaten Annahmezellen platzieren
- Zellverweise statt hartcodierter Werte in Formeln verwenden
- Beispiel: =B5*(1+$B$6) statt =B5*1,05 verwenden
Formelfehlervermeidung
- Alle Zellverweise auf Richtigkeit überprüfen
- Auf „um eins versetzte" Fehler in Bereichen prüfen
- Konsistente Formeln über alle Prognosezeiträume sicherstellen
- Mit Randfällen testen (Nullwerte, negative Zahlen)
- Sicherstellen, dass keine unbeabsichtigten Zirkelbezüge vorhanden sind
Dokumentationsanforderungen für Hartcodierungen
- Kommentar oder in Zellen daneben (wenn am Ende einer Tabelle). Format: „Quelle: [System/Dokument], [Datum], [Spezifischer Verweis], [URL falls vorhanden]"
- Beispiele:
- „Quelle: Company 10-K, GJ2024, Seite 45, Umsatzhinweis, [SEC EDGAR URL]"
- „Quelle: Company 10-Q, Q2 2025, Anhang 99.1, [SEC EDGAR URL]"
- „Quelle: Bloomberg Terminal, 15.08.2025, AAPL US Equity"
- „Quelle: FactSet, 20.08.2025, Consensus Estimates Screen"
Erstellung, Bearbeitung und Analyse von XLSX
Überblick
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 Arbeitsabläufe zur Verfügung.
Wichtige Anforderungen
LibreOffice für Formelneuberechnung 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 Start automatisch
Lesen und Analysieren von Daten
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)
Arbeitsabläufe für Excel-Dateien
KRITISCH: Formeln verwenden, keine hartcodierten Werte
Verwenden Sie IMMER Excel-Formeln, anstatt Werte in Python zu berechnen und hartzucodieren. Dadurch bleibt die Tabelle dynamisch und aktualisierbar.
❌ FALSCH - Hartcodieren berechneter Werte
# Schlecht: In Python berechnen und Ergebnis hartcodieren
gesamt = df['Umsatz'].sum()
blatt['B10'] = gesamt # 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
mittelwert = sum(werte) / len(werte)
blatt['D20'] = mittelwert # 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 Quelldaten ändern.
Allgemeiner Arbeitsablauf
- 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): Das 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 neu berechnen
- Häufige zu behebende Fehler:
#REF!: Ungültige Zellverweise#DIV/0!: Division durch Null#VALUE!: Falscher Datentyp in Formel#NAME?: Nicht erkannte Formelbezeichnung
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 blattname in wb.sheetnames:
blatt = wb[blattname]
print(f"Blatt: {blattname}")
# 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('geaendert.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> [timeout_sekunden]
Beispiel:
python recalc.py ausgabe.xlsx 30
Das Skript:
- Richtet beim ersten Start automatisch ein 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 macOS
Checkliste zur Formelverifikation
Schnelle Überprüfungen, um sicherzustellen, dass Formeln korrekt funktionieren:
Wesentliche Überprüfung
- 2-3 Beispielverweise testen: Überprüfen, ob sie die korrekten Werte ziehen, bevor das vollständige Modell erstellt wird
- Spaltenzuordnung: Bestätigen, dass Excel-Spalten übereinstimmen (z. B. Spalte 64 = BL, nicht BK)
- Zeilenversatz: Denken Sie daran, dass Excel-Zeilen 1-basiert sind (DataFrame-Zeile 5 = Excel-Zeile 6)
Häufige Fallstricke
- NaN-Behandlung: Auf Nullwerte mit
pd.notna()prüfen - Spalten ganz rechts: GJ-Daten befinden sich oft in Spalten 50+
- Mehrere Übereinstimmungen: Alle Vorkommen durchsuchen, nicht nur das erste
- Division durch Null: Nenner überprüfen, bevor
/in Formeln verwendet wird (#DIV/0!) - Falsche Verweise: Überprüfen, ob alle Zellverweise auf die beabsichtigten Zellen zeigen (#REF!)
- Blattübergreifende Verweise: Korrektes Format (Blatt1!A1) zum Verknüpfen von Blättern verwenden
Formelteststrategie
- Klein anfangen: Formeln zuerst an 2-3 Zellen testen, bevor sie breit angewendet werden
- Abhängigkeiten überprüfen: Sicherstellen, dass alle in Formeln referenzierten Zellen existieren
- Randfälle testen: Null-, negative und sehr große Werte einbeziehen
Interpretieren der recalc.py-Ausgabe
Das Skript gibt JSON mit Fehlerdetails zurück:
{
"status": "success", // oder "errors_found"
"total_errors": 0, // Gesamtfehleranzahl
"total_formulas": 42, // Anzahl der Formeln in Datei
"error_summary": { // Nur vorhanden, wenn Fehler gefunden
"#REF!": {
"count": 2,
"locations": ["Blatt1!B5", "Blatt1!C10"]
}
}
}
Best Practices
Bibliotheksauswahl
- pandas: Am besten für Datenanalyse, Bulk-Operationen und einfachen Datenexport geeignet
- openpyxl: Am besten für komplexe Formatierung, Formeln und Excel-spezifische Funktionen geeignet
Arbeiten mit openpyxl
- Zellindizes sind 1-basiert (Zeile=1, Spalte=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, werden Formeln dauerhaft durch Werte ersetzt - Für große Dateien:
read_only=Truezum Lesen oderwrite_only=Truezum Schreiben verwenden - Formeln bleiben erhalten, werden aber nicht ausgewertet – recalc.py zur Aktualisierung der Werte verwenden
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'])
Code-Stilrichtlinien
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 hartcodierte Werte dokumentieren
- Notizen zu wichtigen Berechnungen und Modellabschnitten einfügen