Anforderungen für Ausgaben
Alle Excel-Dateien
Professionelle Schriftart
- Verwenden Sie eine konsistente, professionelle Schriftart (z. B. Arial, Times New Roman) für alle Ausgaben, sofern der Benutzer nichts anderes vorgibt
Keine Formelfehler
- Jedes Excel-Modell MUSS fehlerfrei ausgeliefert werden (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)
Vorhandene Vorlagen beibehalten (beim Aktualisieren von Vorlagen)
- Studieren und GENAU das vorhandene Format, den Stil und die Konventionen beim Ändern von Dateien einhalten
- Niemals standardisierte Formatierungen auf Dateien mit etablierten Mustern aufzwingen
- Vorhandene Vorlagenkonventionen überschreiben IMMER diese 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 der Benutzer für Szenarien ändern wird
- Schwarzer Text (RGB: 0,0,0): ALLE Formeln und Berechnungen
- Grüner Text (RGB: 0,128,0): Verweise, die aus anderen Arbeitsblättern innerhalb derselben Arbeitsmappe abgerufen werden
- Roter Text (RGB: 255,0,0): Externe Verweise auf andere Dateien
- Gelber Hintergrund (RGB: 255,255,0): Wichtige Annahmen, die Aufmerksamkeit erfordern, oder Zellen, die aktualisiert werden müssen
Formatierungsstandards für Zahlen
Erforderliche Formatregeln
- Jahre: Als Textzeichenfolgen formatieren (z. B. "2024" nicht "2.024")
- Währung: Format $#.##0 verwenden; IMMER Einheiten in Kopfzeilen angeben ("Umsatz ($ Mio.)")
- Nullen: Zahlenformatierung verwenden, um alle Nullen als "-" darzustellen, einschließlich Prozentwerten (z. B. "$#.##0;($#.##0);-")
- Prozentsätze: Standardmäßig Format 0,0% (eine Dezimalstelle) verwenden
- Multiples: Als 0,0x für Bewertungsmultiples (EV/EBITDA, KGV) formatieren
- Negative Zahlen: Klammern (123) statt Minus -123 verwenden
Regeln für die Formelerstellung
Platzierung von Annahmen
- Platzieren Sie ALLE Annahmen (Wachstumsraten, Margen, Multiples usw.) in separaten Annahmezellen
- Verwenden Sie Zellbezüge anstelle von hartcodierten Werten in Formeln
- Beispiel: =B5*(1+$B$6) anstelle von =B5*1,05 verwenden
Vermeidung von Formelfehlern
- Überprüfen Sie alle Zellbezüge auf Richtigkeit
- Achten Sie auf „Off-by-one"-Fehler in Bereichen
- Stellen Sie konsistente Formeln über alle Prognosezeiträume sicher
- Testen Sie mit Randfällen (Nullwerte, negative Zahlen)
- Überprüfen Sie, ob keine unbeabsichtigten Zirkelbezüge vorhanden sind
Dokumentationsanforderungen für Hartcodierungen
- Kommentieren Sie in Zellen daneben (wenn am Ende einer Tabelle). Format: "Quelle: [System/Dokument], [Datum], [Spezifischer Verweis], [URL falls zutreffend]"
- Beispiele:
- "Quelle: Company 10-K, GJ2024, Seite 45, Anmerkung zu Umsatzerlösen, [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, Konsensschätzungsbildschirm"
XLSX-Erstellung, -Bearbeitung und -Analyse
Ü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 die Formelneuberechnung erforderlich: Sie können davon ausgehen, dass LibreOffice installiert ist, um Formelwerte mit dem Skript scripts/recalc.py neu zu berechnen. Das Skript konfiguriert LibreOffice beim ersten Start automatisch, auch in Sandbox-Umgebungen, in denen Unix-Sockets eingeschränkt sind (wird von scripts/office/soffice.py behandelt)
Lesen und Analysieren von Daten
Datenanalyse mit pandas
Verwenden Sie für Datenanalyse, Visualisierung und grundlegende Operationen pandas, das leistungsstarke Datenmanipulationsfunktionen bietet:
import pandas as pd
# Excel lesen
df = pd.read_excel('file.xlsx') # Standard: erstes Blatt
all_sheets = pd.read_excel('file.xlsx', sheet_name=None) # Alle Blätter als Dict
# Analysieren
df.head() # Datenvorschau
df.info() # Spalteninformationen
df.describe() # Statistiken
# Excel schreiben
df.to_excel('output.xlsx', index=False)
Excel-Datei-Workflows
KRITISCH: Verwenden Sie Formeln, keine hartcodierten Werte
Verwenden Sie immer Excel-Formeln, anstatt Werte in Python zu berechnen und hartzucodieren. Dies stellt sicher, dass die Tabelle dynamisch und aktualisierbar bleibt.
❌ FALSCH – Hartcodieren berechneter Werte
# Schlecht: In Python berechnen und Ergebnis hartcodieren
total = df['Sales'].sum()
sheet['B10'] = total # Hartcodiert 5000
# Schlecht: Wachstumsrate in Python berechnen
growth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']
sheet['C5'] = growth # Hartcodiert 0,15
# Schlecht: Python-Berechnung für Durchschnitt
avg = sum(values) / len(values)
sheet['D20'] = avg # Hartcodiert 42,5
✅ RICHTIG – Verwenden von Excel-Formeln
# Gut: Excel die Summe berechnen lassen
sheet['B10'] = '=SUM(B2:B9)'
# Gut: Wachstumsrate als Excel-Formel
sheet['C5'] = '=(C4-C2)/C2'
# Gut: Durchschnitt mit Excel-Funktion
sheet['D20'] = '=AVERAGE(D2:D19)'
Dies gilt für ALLE Berechnungen – Summen, Prozentsätze, Verhältnisse, Differenzen usw. Die Tabelle sollte in der Lage sein, neu zu berechnen, 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 Formatierungen hinzufügen/bearbeiten
- Speichern: In Datei schreiben
- Formeln neu berechnen (PFLICHT, WENN FORMELN VERWENDET WERDEN): Verwenden Sie das Skript scripts/recalc.py
python scripts/recalc.py output.xlsx - Fehler überprüfen und beheben:
- Das Skript gibt JSON mit Fehlerdetails zurück
- Wenn der
statuserrors_foundist, überprüfen Sieerror_summaryauf spezifische Fehlertypen und -orte - Beheben Sie die identifizierten Fehler und berechnen Sie erneut neu
- Häufige zu behebende Fehler:
#REF!: Ungültige Zellbezüge#DIV/0!: Division durch Null#VALUE!: Falscher Datentyp in Formel#NAME?: Unbekannter Formelname
Erstellen neuer Excel-Dateien
# Verwenden von openpyxl für Formeln und Formatierung
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
wb = Workbook()
sheet = wb.active
# Daten hinzufügen
sheet['A1'] = 'Hallo'
sheet['B1'] = 'Welt'
sheet.append(['Zeile', 'von', 'Daten'])
# Formel hinzufügen
sheet['B2'] = '=SUM(A1:A10)'
# Formatierung
sheet['A1'].font = Font(bold=True, color='FF0000')
sheet['A1'].fill = PatternFill('solid', start_color='FFFF00')
sheet['A1'].alignment = Alignment(horizontal='center')
# Spaltenbreite
sheet.column_dimensions['A'].width = 20
wb.save('output.xlsx')
Bearbeiten vorhandener Excel-Dateien
# Verwenden von openpyxl zum Beibehalten von Formeln und Formatierung
from openpyxl import load_workbook
# Vorhandene Datei laden
wb = load_workbook('existing.xlsx')
sheet = wb.active # oder wb['SheetName'] für ein bestimmtes Blatt
# Mit mehreren Blättern arbeiten
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
print(f"Blatt: {sheet_name}")
# Zellen ändern
sheet['A1'] = 'Neuer Wert'
sheet.insert_rows(2) # Zeile an Position 2 einfügen
sheet.delete_cols(3) # Spalte 3 löschen
# Neues Blatt hinzufügen
new_sheet = wb.create_sheet('NeuesBlatt')
new_sheet['A1'] = 'Daten'
wb.save('modified.xlsx')
Formeln neu berechnen
Mit openpyxl erstellte oder geänderte Excel-Dateien enthalten Formeln als Zeichenfolgen, aber keine berechneten Werte. Verwenden Sie das bereitgestellte Skript scripts/recalc.py, um Formeln neu zu berechnen:
python scripts/recalc.py <excel_datei> [timeout_sekunden]
Beispiel:
python scripts/recalc.py output.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 unter macOS
Checkliste zur Formelüberprüfung
Schnelle Überprüfungen, um sicherzustellen, dass Formeln korrekt funktionieren:
Wesentliche Überprüfung
- 2-3 Beispielverweise testen: Überprüfen, ob sie korrekte Werte abrufen, 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-indexiert sind (DataFrame-Zeile 5 = Excel-Zeile 6)
Häufige Fallstricke
- NaN-Behandlung: Auf Nullwerte mit
pd.notna()prüfen - Spalten weit rechts: Geschäftsjahresdaten oft in Spalten 50+
- Mehrere Übereinstimmungen: Alle Vorkommen durchsuchen, nicht nur das erste
- Division durch Null: Nenner vor der Verwendung von
/in Formeln prüfen (#DIV/0!) - Falsche Verweise: Überprüfen, ob alle Zellbezüge auf die beabsichtigten Zellen verweisen (#REF!)
- Blattübergreifende Verweise: Korrektes Format (Sheet1!A1) zum Verknüpfen von Blättern verwenden
Strategie zum Testen von Formeln
- Klein anfangen: Formeln zunächst an 2-3 Zellen testen, bevor sie breit angewendet werden
- Abhängigkeiten überprüfen: Prüfen, ob alle in Formeln referenzierten Zellen vorhanden sind
- Randfälle testen: Null, negative und sehr große Werte einbeziehen
Interpretieren der Ausgabe von scripts/recalc.py
Das Skript gibt JSON mit Fehlerdetails zurück:
{
"status": "success", // oder "errors_found"
"total_errors": 0, // Gesamtfehleranzahl
"total_formulas": 42, // Anzahl der Formeln in der Datei
"error_summary": { // Nur vorhanden, wenn Fehler gefunden wurden
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}
Best Practices
Bibliotheksauswahl
- pandas: Am besten geeignet für Datenanalyse, Bulk-Operationen und einfachen Datencxport
- openpyxl: Am besten geeignet für komplexe Formatierung, Formeln und Excel-spezifische Funktionen
Arbeiten mit openpyxl
- Zellindizes sind 1-basiert (Zeile=1, Spalte=1 bezieht sich auf Zelle A1)
- Verwenden Sie
data_only=True, um berechnete Werte zu lesen:load_workbook('file.xlsx', data_only=True) - Warnung: Wenn mit
data_only=Truegeöffnet und gespeichert, 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 scripts/recalc.py, um Werte zu aktualisieren
Arbeiten mit pandas
- Datentypen angeben, um Inferenzprobleme zu vermeiden:
pd.read_excel('file.xlsx', dtype={'id': str}) - Für große Dateien bestimmte Spalten lesen:
pd.read_excel('file.xlsx', usecols=['A', 'C', 'E']) - Daten ordnungsgemäß behandeln:
pd.read_excel('file.xlsx', parse_dates=['date_column'])
Code-Stil-Richtlinien
WICHTIG: Beim Generieren von Python-Code für Excel-Operationen:
- Schreiben Sie minimalen, prägnanten Python-Code ohne unnötige Kommentare
- Vermeiden Sie ausführliche Variablennamen und redundante Operationen
- Vermeiden Sie unnötige print-Anweisungen
Für Excel-Dateien selbst:
- Fügen Sie Kommentare zu Zellen mit komplexen Formeln oder wichtigen Annahmen hinzu
- Dokumentieren Sie Datenquellen für hartcodierte Werte
- Fügen Sie Notizen zu wichtigen Berechnungen und Modellabschnitten hinzu