Anthropic Skills 中文文档
首页
使用指南
技能列表
  • 🎨 创意与设计
  • 💻 开发与技术
  • 🏢 企业与沟通
  • 📄 文档处理
  • 🔧 元技能
  • GitHub 仓库
  • Claude 官网
  • Skills 官方文档
GitHub
首页
使用指南
技能列表
  • 🎨 创意与设计
  • 💻 开发与技术
  • 🏢 企业与沟通
  • 📄 文档处理
  • 🔧 元技能
  • GitHub 仓库
  • Claude 官网
  • Skills 官方文档
GitHub
  • 技能列表
  • 🎨 创意与设计

    • 🎨 算法艺术生成

      • 📋 概览
      • 📖 完整指南
    • 🖼️ 画布设计

      • 📋 概览
      • 📖 完整指南
    • 🎬 Slack GIF 创建器

      • 📋 概览
      • 📖 完整指南
    • 🎨 主题工厂

      • 📋 概览
      • 📖 完整指南
  • 💻 开发与技术

    • 🎨 Web 组件构建器

      • 📋 概览
      • 📖 完整指南
    • 📦 MCP 服务器构建器

      • 📋 概览
      • 📖 完整指南
    • 🧪 Web 应用测试工具

      • 📋 概览
      • 📖 完整指南
  • 🏢 企业与沟通

    • 🎨 品牌指南

      • 📋 概览
      • 📖 完整指南
    • 📢 企业内部沟通

      • 📋 概览
      • 📖 完整指南
    • 💎 前端设计

      • 📋 概览
      • 📖 完整指南
  • 📄 文档处理

    • 📘 Word 文档处理

      • 📋 概览
      • 📖 完整指南
    • 📕 PDF 文档处理

      • 📋 概览
      • 📖 完整指南
    • 📙 PowerPoint 演示文稿处理

      • 📋 概览
      • 📖 完整指南
    • 📗 Excel 表格处理

      • 📋 概览
      • 📖 完整指南
  • 🔧 元技能

    • 🛠️ Skill 创建器

      • 📋 概览
      • 📖 完整指南
    • 📝 Skill 模板

      • 📋 概览
      • 📖 完整参考

📗 Excel 表格处理 - 完整指南

本文档是 Excel 表格处理技能的完整技术参考,包含所有工作流程、财务建模规范和最佳实践。

  • 📋 概述
  • ⚠️ 核心要求
    • 1. 零公式错误(Zero Formula Errors)
    • 2. 使用公式而非硬编码
    • 3. 必须重新计算公式
  • 💼 财务建模规范
    • 颜色编码标准
    • 数字格式标准
    • 公式构建规则
  • 🔧 核心工具库
    • 1. pandas - 数据分析
    • 2. openpyxl - 创建和编辑 Excel
    • 3. recalc.py - 公式重算脚本
  • 📊 工作流程详解
    • 工作流 1: 数据分析(pandas)
    • 工作流 2: 财务模型创建(openpyxl)
    • 工作流 3: 批量处理模板
  • 🎨 高级格式化
    • 条件格式
    • 数据验证
  • 📈 图表和可视化
    • 创建图表
  • 🎯 最佳实践
    • 1. 公式错误检查清单
    • 2. 性能优化
    • 3. 版本控制
    • 4. 文档化
  • ⚠️ 常见问题
    • 问题 1: 公式未计算
    • 问题 2: #DIV/0! 错误
    • 问题 3: #REF! 错误
    • 问题 4: 中文乱码
    • 问题 5: 公式显示为文本
  • 📋 快速参考
  • 🔗 参考资源
    • 官方文档
    • 财务建模资源
  • 📝 总结

📋 概述

Excel 表格处理技能提供全面的电子表格操作方案,支持:

  • 数据分析 - 使用 pandas 进行强大的数据处理
  • 公式和计算 - 创建动态、可重算的电子表格
  • 财务建模 - 遵循行业标准规范
  • 格式化 - 专业的单元格样式和条件格式
  • 数据可视化 - 图表、透视表、仪表板

⚠️ 核心要求

1. 零公式错误(Zero Formula Errors)

强制要求: 交付的所有 Excel 文件必须实现零公式错误。

禁止的错误类型:

  • #REF! - 无效单元格引用
  • #DIV/0! - 除以零
  • #VALUE! - 错误的数据类型
  • #N/A - 值不可用
  • #NAME? - 无法识别的公式名称

2. 使用公式而非硬编码

CRITICAL: 始终使用 Excel 公式,而不是在 Python 中计算值后硬编码。

❌ 错误示例:

# 在 Python 中计算并硬编码结果
total = df['Sales'].sum()  # 计算得到 5000
ws['B10'] = 5000  # 硬编码值!

growth = (new_value - old_value) / old_value
ws['C5'] = 0.15  # 硬编码增长率!

✅ 正确示例:

# 使用 Excel 公式
ws['B10'] = "=SUM(B2:B9)"  # 动态求和
ws['C5'] = "=(C4-C2)/C2"  # 动态计算增长率

原因: 公式使电子表格保持动态性,当源数据变化时会自动更新。

3. 必须重新计算公式

创建包含公式的 Excel 文件后,必须使用 recalc.py 重新计算公式值:

python recalc.py output.xlsx

💼 财务建模规范

颜色编码标准

遵循行业标准的颜色编码约定:

颜色RGB 值用途示例
蓝色0,0,255用户输入、假设增长率、初始值
黑色0,0,0所有公式和计算=SUM(), =A1*B1
绿色0,128,0同一工作簿内引用=Sheet2!A1
红色255,0,0外部文件链接=[Other.xlsx]Sheet1!A1
黄色背景255,255,0关键假设需注意核心参数

代码实现:

from openpyxl.styles import Font, PatternFill

# 蓝色文字 = 输入
ws['B2'].font = Font(color="0000FF")

# 黑色文字 = 公式
ws['C2'].font = Font(color="000000")

# 绿色文字 = 内部链接
ws['D2'].font = Font(color="008000")

# 黄色背景 = 关键假设
ws['B2'].fill = PatternFill(start_color="FFFF00", fill_type="solid")

数字格式标准

1. 年份格式

# ✅ 正确:文本格式
ws['B1'] = "2024"
ws['B1'].number_format = '@'  # 文本格式

# ❌ 错误:数字格式会显示为 "2,024"
ws['B1'] = 2024  

2. 货币格式

# 格式:$#,##0(隐藏零值)
ws['B5'].number_format = '$#,##0;($#,##0);-'

# 表头必须标注单位
ws['A5'] = "Revenue ($M)"  # 百万美元

3. 零值显示为短划线

# 所有数字(包括百分比)零值显示为 "-"
ws['B5'].number_format = '$#,##0;($#,##0);-'  # 货币
ws['C5'].number_format = '0.0%;(0.0%);-'     # 百分比

4. 百分比格式

ws['B5'].number_format = '0.0%'  # 一位小数

5. 估值倍数

# 格式:0.0x
ws['B5'].number_format = '0.0"x"'  # 如 "12.5x"

6. 负数使用括号

# (123) 而不是 -123
ws['B5'].number_format = '#,##0;(#,##0);-'

公式构建规则

1. 假设单独放置

# ✅ 正确:假设在独立单元格
ws['B2'] = "Growth Rate Assumption"
ws['C2'] = 0.15  # 15% 假设
ws['C2'].font = Font(color="0000FF")

ws['B5'] = "Projected Revenue"
ws['C5'] = "=C4*(1+$C$2)"  # 引用假设单元格

2. 使用绝对引用

# 使用 $C$2 固定引用假设
ws['C5'] = "=C4*(1+$C$2)"  # 可横向复制

3. 避免循环引用

检查公式是否意外引用自身或形成循环。

4. 文档化硬编码数据

# 对于硬编码输入,添加数据源注释
ws['B10'] = 1250000
ws['C10'] = "Source: Company 10-K, FY2024, Page 45, Revenue Note"

🔧 核心工具库

1. pandas - 数据分析

用途: 读取、分析、转换 Excel 数据

安装: pip install pandas openpyxl

基本操作

import pandas as pd

# 读取 Excel
df = pd.read_excel('data.xlsx')  # 第一个 sheet
all_sheets = pd.read_excel('data.xlsx', sheet_name=None)  # 所有 sheet

# 查看数据
print(df.head())      # 前 5 行
print(df.info())      # 列信息
print(df.describe())  # 统计摘要

# 写入 Excel
df.to_excel('output.xlsx', index=False)

数据筛选和转换

# 筛选数据
high_sales = df[df['Sales'] > 10000]
recent = df[df['Date'] > '2024-01-01']

# 分组聚合
monthly = df.groupby('Month')['Revenue'].sum()
by_product = df.groupby('Product').agg({
    'Sales': 'sum',
    'Quantity': 'mean'
})

# 数据透视
pivot = df.pivot_table(
    values='Revenue',
    index='Product',
    columns='Month',
    aggfunc='sum'
)

多 Sheet 写入

with pd.ExcelWriter('report.xlsx', engine='openpyxl') as writer:
    df1.to_excel(writer, sheet_name='Summary', index=False)
    df2.to_excel(writer, sheet_name='Details', index=False)
    pivot.to_excel(writer, sheet_name='Pivot')

2. openpyxl - 创建和编辑 Excel

用途: 创建 Excel 文件,支持公式、格式、图表

安装: pip install openpyxl

创建新工作簿

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter

wb = Workbook()
ws = wb.active
ws.title = "Sales Data"

# 写入数据
ws['A1'] = "Product"
ws['B1'] = "Sales"
ws['A2'] = "Product A"
ws['B2'] = 100

# 应用样式
ws['A1'].font = Font(bold=True, size=14)
ws['A1'].alignment = Alignment(horizontal='center')

wb.save("sales.xlsx")

编辑现有文件

from openpyxl import load_workbook

wb = load_workbook('existing.xlsx')
ws = wb['Sheet1']  # 或 wb.active

# 读取值
value = ws['A1'].value

# 修改值
ws['B5'] = "=SUM(B2:B4)"

# 添加新 sheet
ws2 = wb.create_sheet("New Sheet")

wb.save('modified.xlsx')

公式和格式

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill

wb = Workbook()
ws = wb.active

# 公式(黑色)
ws['A1'] = "Total"
ws['B1'] = "=SUM(B2:B10)"
ws['B1'].font = Font(color="000000")

# 输入(蓝色)
ws['A2'] = "Base Value"
ws['B2'] = 100
ws['B2'].font = Font(color="0000FF")

# 黄色背景(需注意)
ws['B2'].fill = PatternFill(start_color="FFFF00", fill_type="solid")

# 数字格式
ws['B1'].number_format = '$#,##0;($#,##0);-'

wb.save('formatted.xlsx')

3. recalc.py - 公式重算脚本

用途: 使用 LibreOffice 重新计算 Excel 公式值

使用:

python recalc.py output.xlsx

输出示例(成功):

{
  "status": "success",
  "message": "No formula errors found",
  "file": "output.xlsx"
}

输出示例(有错误):

{
  "status": "errors_found",
  "error_summary": {
    "#DIV/0!": 2,
    "#REF!": 1
  },
  "errors": [
    {
      "sheet": "Sheet1",
      "cell": "B5",
      "formula": "=A5/A6",
      "error": "#DIV/0!",
      "reason": "Division by zero"
    }
  ]
}

错误修复流程:

  1. 运行 recalc.py 检测错误
  2. 根据 JSON 输出定位错误位置
  3. 修复公式
  4. 再次运行 recalc.py 验证

📊 工作流程详解

工作流 1: 数据分析(pandas)

适用场景: 读取、分析、转换现有数据

完整示例:销售数据分析

import pandas as pd
import matplotlib.pyplot as plt

# 1. 读取数据
df = pd.read_excel('sales_raw.xlsx')

# 2. 数据清洗
df['Date'] = pd.to_datetime(df['Date'])
df = df.dropna(subset=['Revenue'])  # 删除空值
df = df[df['Revenue'] > 0]  # 删除无效数据

# 3. 数据分析
# 月度汇总
df['Month'] = df['Date'].dt.to_period('M')
monthly_summary = df.groupby('Month').agg({
    'Revenue': 'sum',
    'Quantity': 'sum',
    'CustomerID': 'nunique'  # 唯一客户数
}).reset_index()

# 产品分析
product_analysis = df.groupby('Product').agg({
    'Revenue': ['sum', 'mean'],
    'Quantity': 'sum'
}).reset_index()

# 增长分析
monthly_summary['Growth'] = monthly_summary['Revenue'].pct_change()

# 4. 数据可视化
plt.figure(figsize=(10, 6))
plt.plot(monthly_summary['Month'].astype(str), monthly_summary['Revenue'])
plt.title('Monthly Revenue Trend')
plt.xticks(rotation=45)
plt.savefig('revenue_trend.png')

# 5. 导出分析结果
with pd.ExcelWriter('sales_analysis.xlsx', engine='openpyxl') as writer:
    monthly_summary.to_excel(writer, sheet_name='Monthly', index=False)
    product_analysis.to_excel(writer, sheet_name='Products', index=False)
    df.to_excel(writer, sheet_name='Clean Data', index=False)

print("分析完成!")

工作流 2: 财务模型创建(openpyxl)

适用场景: 创建财务预测、估值模型、DCF 模型

完整示例:三年收入预测模型

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
import subprocess

wb = Workbook()
ws = wb.active
ws.title = "Revenue Model"

# ========== 1. 标题行 ==========
ws['A1'] = "Three-Year Revenue Forecast"
ws['A1'].font = Font(bold=True, size=16, color="000000")
ws.merge_cells('A1:E1')
ws['A1'].alignment = Alignment(horizontal='center')

# ========== 2. 年份行 ==========
ws['A3'] = "Year"
years = ["2024", "2025", "2026"]
for i, year in enumerate(years, start=2):
    col = get_column_letter(i)
    ws[f'{col}3'] = year
    ws[f'{col}3'].number_format = '@'  # 文本格式
    ws[f'{col}3'].font = Font(bold=True, color="000000")

# ========== 3. 假设区域(蓝色) ==========
ws['A5'] = "ASSUMPTIONS"
ws['A5'].font = Font(bold=True, color="000000")
ws['A5'].fill = PatternFill(start_color="D3D3D3", fill_type="solid")

ws['A6'] = "Revenue Growth Rate"
ws['B6'] = 0.15  # 15%
ws['B6'].font = Font(color="0000FF")  # 蓝色 = 输入
ws['B6'].number_format = '0.0%'
ws['B6'].fill = PatternFill(start_color="FFFF00", fill_type="solid")  # 黄色 = 关键

ws['A7'] = "COGS % of Revenue"
ws['B7'] = 0.40  # 40%
ws['B7'].font = Font(color="0000FF")
ws['B7'].number_format = '0.0%'

ws['A8'] = "Operating Expenses % of Revenue"
ws['B8'] = 0.25  # 25%
ws['B8'].font = Font(color="0000FF")
ws['B8'].number_format = '0.0%'

# ========== 4. 基准年数据(蓝色) ==========
ws['A10'] = "BASE YEAR DATA (2023)"
ws['A10'].font = Font(bold=True, color="000000")
ws['A10'].fill = PatternFill(start_color="D3D3D3", fill_type="solid")

ws['A11'] = "Base Year Revenue ($M)"
ws['B11'] = 100.0
ws['B11'].font = Font(color="0000FF")  # 蓝色 = 输入
ws['B11'].number_format = '$#,##0;($#,##0);-'

# ========== 5. 损益表(公式 = 黑色) ==========
ws['A13'] = "INCOME STATEMENT ($M)"
ws['A13'].font = Font(bold=True, color="000000")
ws['A13'].fill = PatternFill(start_color="D3D3D3", fill_type="solid")

# 收入行
ws['A14'] = "Revenue"
ws['B14'] = "=B11"  # 2024 = 基准
ws['C14'] = "=B14*(1+$B$6)"  # 2025 = 2024 * (1 + 增长率)
ws['D14'] = "=C14*(1+$B$6)"  # 2026

for col in ['B', 'C', 'D']:
    ws[f'{col}14'].font = Font(color="000000")  # 黑色 = 公式
    ws[f'{col}14'].number_format = '$#,##0;($#,##0);-'

# COGS 行
ws['A15'] = "Cost of Goods Sold"
ws['B15'] = "=B14*$B$7"
ws['C15'] = "=C14*$B$7"
ws['D15'] = "=D14*$B$7"

for col in ['B', 'C', 'D']:
    ws[f'{col}15'].font = Font(color="000000")
    ws[f'{col}15'].number_format = '$#,##0;($#,##0);-'

# 毛利行
ws['A16'] = "Gross Profit"
ws['B16'] = "=B14-B15"
ws['C16'] = "=C14-C15"
ws['D16'] = "=D14-D15"

for col in ['B', 'C', 'D']:
    ws[f'{col}16'].font = Font(color="000000")
    ws[f'{col}16'].number_format = '$#,##0;($#,##0);-'

# 运营费用行
ws['A17'] = "Operating Expenses"
ws['B17'] = "=B14*$B$8"
ws['C17'] = "=C14*$B$8"
ws['D17'] = "=D14*$B$8"

for col in ['B', 'C', 'D']:
    ws[f'{col}17'].font = Font(color="000000")
    ws[f'{col}17'].number_format = '$#,##0;($#,##0);-'

# EBIT 行
ws['A18'] = "EBIT"
ws['B18'] = "=B16-B17"
ws['C18'] = "=C16-C17"
ws['D18'] = "=D16-D17"

for col in ['B', 'C', 'D']:
    ws[f'{col}18'].font = Font(color="000000", bold=True)
    ws[f'{col}18'].number_format = '$#,##0;($#,##0);-'

# ========== 6. 财务比率 ==========
ws['A20'] = "KEY METRICS"
ws['A20'].font = Font(bold=True, color="000000")
ws['A20'].fill = PatternFill(start_color="D3D3D3", fill_type="solid")

ws['A21'] = "Gross Margin %"
ws['B21'] = "=B16/B14"
ws['C21'] = "=C16/C14"
ws['D21'] = "=D16/D14"

for col in ['B', 'C', 'D']:
    ws[f'{col}21'].font = Font(color="000000")
    ws[f'{col}21'].number_format = '0.0%;(0.0%);-'

ws['A22'] = "EBIT Margin %"
ws['B22'] = "=B18/B14"
ws['C22'] = "=C18/C14"
ws['D22'] = "=D18/D14"

for col in ['B', 'C', 'D']:
    ws[f'{col}22'].font = Font(color="000000")
    ws[f'{col}22'].number_format = '0.0%;(0.0%);-'

# ========== 7. 列宽调整 ==========
ws.column_dimensions['A'].width = 30
ws.column_dimensions['B'].width = 15
ws.column_dimensions['C'].width = 15
ws.column_dimensions['D'].width = 15

# ========== 8. 保存和重算 ==========
output_file = "revenue_forecast_model.xlsx"
wb.save(output_file)
print(f"模型已创建: {output_file}")

# ⚠️ 必须重算公式!
result = subprocess.run(["python", "recalc.py", output_file], 
                       capture_output=True, text=True)
print(result.stdout)

工作流 3: 批量处理模板

适用场景: 为多个实体生成定制报表

from openpyxl import load_workbook
from openpyxl.styles import Font
import pandas as pd
import subprocess

# 1. 从数据库或 CSV 读取数据
data = pd.read_excel('departments_data.xlsx')

# 2. 为每个部门生成报表
for index, row in data.iterrows():
    dept_name = row['Department']
    revenue = row['Revenue']
    growth = row['Growth_Rate']
    headcount = row['Headcount']
    
    # 加载模板
    wb = load_workbook('template.xlsx')
    ws = wb.active
    
    # 更新标题
    ws['A1'] = f"{dept_name} - Quarterly Report"
    ws['A1'].font = Font(bold=True, size=16)
    
    # 填充数据(蓝色 = 输入)
    ws['B5'] = revenue
    ws['B5'].font = Font(color="0000FF")
    
    ws['B6'] = growth
    ws['B6'].font = Font(color="0000FF")
    
    ws['B7'] = headcount
    ws['B7'].font = Font(color="0000FF")
    
    # 其他单元格包含公式,自动计算
    
    # 保存
    output_file = f"{dept_name.replace(' ', '_')}_report.xlsx"
    wb.save(output_file)
    print(f"已生成: {output_file}")
    
    # 重算公式
    subprocess.run(["python", "recalc.py", output_file], 
                   capture_output=True)

print("批量处理完成!")

🎨 高级格式化

条件格式

from openpyxl import Workbook
from openpyxl.formatting.rule import ColorScaleRule, CellIsRule
from openpyxl.styles import PatternFill

wb = Workbook()
ws = wb.active

# 示例数据
ws['A1'] = "Sales"
for i in range(2, 12):
    ws[f'A{i}'] = i * 1000

# 1. 颜色刻度(红-黄-绿)
color_scale = ColorScaleRule(
    start_type='min', start_color='FF0000',  # 红色
    mid_type='percentile', mid_value=50, mid_color='FFFF00',  # 黄色
    end_type='max', end_color='00FF00'  # 绿色
)
ws.conditional_formatting.add('A2:A11', color_scale)

# 2. 突出显示大于 5000 的值
red_fill = PatternFill(bgColor="FFC7CE", fill_type="solid")
high_value_rule = CellIsRule(
    operator='greaterThan',
    formula=['5000'],
    fill=red_fill
)
ws.conditional_formatting.add('A2:A11', high_value_rule)

wb.save('conditional_formatting.xlsx')

数据验证

from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation

wb = Workbook()
ws = wb.active

# 1. 下拉列表
dv = DataValidation(type="list", formula1='"北京,上海,广州,深圳"')
ws.add_data_validation(dv)
dv.add('A2:A100')

ws['A1'] = "城市"
ws['A2'] = "请选择..."

# 2. 数字范围验证
dv_number = DataValidation(type="whole", operator="between", 
                           formula1=0, formula2=100)
dv_number.error = "请输入 0-100 之间的整数"
dv_number.errorTitle = "无效输入"
ws.add_data_validation(dv_number)
dv_number.add('B2:B100')

ws['B1'] = "分数 (0-100)"

wb.save('data_validation.xlsx')

📈 图表和可视化

创建图表

from openpyxl import Workbook
from openpyxl.chart import BarChart, LineChart, PieChart, Reference

wb = Workbook()
ws = wb.active

# 示例数据
ws.append(["Month", "Revenue", "Costs"])
data = [
    ["Jan", 100, 60],
    ["Feb", 120, 65],
    ["Mar", 150, 70],
    ["Apr", 140, 68],
]
for row in data:
    ws.append(row)

# 1. 柱状图
chart1 = BarChart()
chart1.title = "Monthly Revenue"
chart1.x_axis.title = "Month"
chart1.y_axis.title = "Amount ($K)"

data_ref = Reference(ws, min_col=2, min_row=1, max_row=5, max_col=3)
cats = Reference(ws, min_col=1, min_row=2, max_row=5)
chart1.add_data(data_ref, titles_from_data=True)
chart1.set_categories(cats)

ws.add_chart(chart1, "E2")

# 2. 折线图
chart2 = LineChart()
chart2.title = "Revenue Trend"
chart2.add_data(data_ref, titles_from_data=True)
chart2.set_categories(cats)

ws.add_chart(chart2, "E18")

wb.save('charts.xlsx')

🎯 最佳实践

1. 公式错误检查清单

创建文件后,检查以下项目:

  • [ ] 所有公式使用正确的单元格引用
  • [ ] 没有 off-by-one 错误(范围正确)
  • [ ] 假设使用绝对引用($A$1)
  • [ ] 没有循环引用
  • [ ] 运行 recalc.py 验证
  • [ ] 修复所有错误后再交付

2. 性能优化

大数据集处理:

# ❌ 慢:逐行追加
for row in data:
    ws.append(row)

# ✅ 快:批量写入
ws.append(data)  # 一次性写入所有行

# 或使用 pandas
df.to_excel('large.xlsx', index=False)

批量处理时释放内存:

import gc

for i in range(100):
    wb = load_workbook('template.xlsx')
    # ... 处理 ...
    wb.save(f'output_{i}.xlsx')
    wb.close()
    del wb
    gc.collect()

3. 版本控制

from datetime import datetime

version = datetime.now().strftime("%Y%m%d_%H%M")
wb.save(f"Financial_Model_{version}.xlsx")

4. 文档化

# 添加说明 sheet
ws_notes = wb.create_sheet("Notes")
ws_notes['A1'] = "Model Documentation"
ws_notes['A3'] = "Created: 2024-01-15"
ws_notes['A4'] = "Purpose: Three-year revenue forecast"
ws_notes['A5'] = "Assumptions: See Assumptions section"
ws_notes['A6'] = "Contact: finance@company.com"

⚠️ 常见问题

问题 1: 公式未计算

原因: 未运行 recalc.py

解决方案:

python recalc.py output.xlsx

问题 2: #DIV/0! 错误

原因: 除数为零

解决方案: 使用 IFERROR 包装

ws['B5'] = "=IFERROR(A5/A6, 0)"  # 错误时返回 0

问题 3: #REF! 错误

原因: 引用了不存在的单元格

解决方案: 检查公式中的单元格引用

问题 4: 中文乱码

解决方案: 使用 UTF-8 编码

df.to_excel('output.xlsx', index=False, encoding='utf-8')

问题 5: 公式显示为文本

原因: 单元格格式为文本

解决方案:

ws['B5'].number_format = 'General'  # 重置为常规格式

📋 快速参考

任务工具代码示例
读取数据pandaspd.read_excel('file.xlsx')
数据分析pandasdf.groupby('Col').sum()
创建公式openpyxlws['A1'] = "=SUM(A2:A10)"
应用格式openpyxlws['A1'].font = Font(color="0000FF")
重算公式recalc.pypython recalc.py file.xlsx
添加图表openpyxlws.add_chart(chart, "E2")
条件格式openpyxlws.conditional_formatting.add()

🔗 参考资源

官方文档

  • pandas 文档
  • openpyxl 文档
  • Excel 公式参考

财务建模资源

  • Wall Street Prep - 财务建模培训
  • CFI - 在线课程
  • FAST Standard - 建模标准

📝 总结

Excel 表格处理技能提供了完整的电子表格操作方案:

✅ pandas - 强大的数据分析和转换
✅ openpyxl - 创建动态、格式化的 Excel 文件
✅ 财务建模规范 - 行业标准颜色编码和格式
✅ 公式优先 - 使用 Excel 公式而非硬编码
✅ 零错误要求 - 使用 recalc.py 验证和修复
✅ 专业格式 - 条件格式、数据验证、图表

根据任务选择合适的工具,遵循财务建模规范,可以创建专业、动态的电子表格。


📖 返回 Excel 表格处理概览

🏠 返回 技能列表

Prev
📋 概览