Community生产力与协作github.com

andreworia/scenario-manager

为 .xlsx 模型构建 Base/Bull/Bear 场景切换层,包含实时选择器、CHOOSE 或 INDEX 假设链接、并排输出对比和重新计算检查,最终交付工作簿。

scenario-manager 是什么?

该技能(Skill)专为需要在一个 Excel 工作簿中明确定义并切换 Base、Bull 和 Bear 三种场景的 AI 代理设计。它通过构建一个全新的 .xlsx 文件(而非修改现有文件),在同一个工作表上创建了一个完全可见且可审计的场景切换层。具体功能包括:一个带有数据验证下拉菜单的实时选择器、一个集中存放所有场景驱动因素的输入表、通过 CHOOSE 或 INDEX 公式将选定场景的假设值链接到模型内部的逻辑层、以及一个并排显示三个场景关键输出结果(并附带差异值)的对比表。此外,技能还会自动添加一个检查表以验证公式和数据的完整性,并通过后台的 LibreOffice 进行完整的重新计算和错误校验,确保交付的工作簿无公式错误且可立即使用。此技能替代了 Excel 内置的、不透明的“方案管理器”,使场景假设透明化、可追溯,并支持版本控制。它支持 Claude App 和任何能运行 openpyxl 的环境。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/andreworia/claude-excel-skills/tree/main/skills/scenario-manager

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

方案管理器(Base / Bull / Bear)

何时使用

当模型需要在一小组假设的驱动下,在 Base、Bull 和 Bear 案例之间清晰切换,并且希望每个案例都在一个工作表上可见且可审计时使用。此技能在 Claude 应用程序中从头构建一个可下载的 .xlsx 文件(使用 openpyxl 和数据验证),包含一个实时选择器、公式驱动的假设拉取、一个对比表以及一个重新计算与验证步骤。它不是“Claude for Excel”插件。

它将构建什么

五个区域:一个 Cover(封面)标签页(选择器和摘要)、一个 Scenario Inputs(场景输入)标签页(每个驱动因素在 Base、Bull、Bear 下的值)、进入模型的实时链接(使假设拉取当前激活的案例)、一个 Outputs(输出)对比标签页(所有三个案例的关键结果并排显示)、以及一个 Checks(检查)标签页。

构建工作流

  1. 列出在不同案例间有差异的驱动因素(例如增长、价格、流失率、资本支出),并在模型中找到每个驱动因素的假设单元格。
  2. 构建 Scenario Inputs 模块,其中包含每个驱动因素的 Base、Bull、Bear 值。
  3. 构建一个单一的选择器单元格(值为 1、2 或 3),并附带数据验证下拉菜单。
  4. 重写每个模型假设单元格,使其通过引用选择器的 CHOOSE 或 INDEX 公式来拉取当前激活的案例。
  5. 构建 Outputs 标签页,并排比较所有三个案例的关键结果(并行计算,见规范),这样无论选择器如何设置,所有案例都能同时显示。
  6. 添加 Checks 标签页。
  7. 在真实的引擎(无头 LibreOffice)中重新计算工作簿。
  8. 验证零公式错误(#REF!、#DIV/0!、#VALUE!、#NAME?),确认检查通过,然后交付 .xlsx 文件。

逐标签页规范

Cover 标签页

  • B2:选择器单元格。应用数据验证列表 1,2,3(或映射到 1/2/3 的命名列表 Base, Bull, Bear)。
  • B3:激活案例名称,=CHOOSE(B2,"Base","Bull","Bear")。
  • 一个小的结果摘要,读取当前激活案例下的实时模型输出,例如 B6 =Model!B40。

Scenario Inputs 标签页

每行一个驱动因素,每列一个案例:

  • A 驱动因素名称,B Base,C Bull,D Bear(全为蓝色输入),E 激活值(黑色公式)。
  • 激活值使用选择器拉取。使用 CHOOSE:E5 =CHOOSE(Cover!$B$2,B5,C5,D5)。
  • 等效的 INDEX 方式:E5 =INDEX(B5:D5,Cover!$B$2)。当案例数量可能增长时,INDEX 更简洁;对于固定的三个案例,CHOOSE 读取更明确。
  • 将选择的一种公式向下复制到每个驱动因素行,以确保列内公式一致。

进入模型的链接

  • 每个模型假设单元格指向相应的激活值,例如 Model!B6 =ScenarioInputs!E5。
  • 切勿让模型持有一个应由场景控制的键入假设;值必须按以下路径流动:选择器 -> 激活列 -> 模型。
  • 保持链接使用绿色的跨标签页引用颜色,以便审查者看到假设是被驱动的,而非手动键入的。

Outputs 标签页(并排对比)

同时显示每个案例,而不仅仅是当前激活的案例。两种健壮的模式:

  • 并行计算(推荐,便于审计):将少数输出公式复制三次,每次都直接使用 Base、Bull 或 Bear 列的数据,而不是激活列。例如,Bull 下的 NPV 使用 ScenarioInputs!C5:C12 而非 E 列重新计算输出链。这样无需触碰选择器即可显示所有三个案例。
  • 逐个读取:如果模型很大,请记录比较单元格如何通过依次将选择器设置为 1、2、3 并在重新计算步骤中粘贴每个捕获的值来捕获每个案例的实时输出;清楚注明哪些单元格是捕获的快照,哪些是实时的。
  • 布局:行 = 关键指标(收入、EBIT、NPV、IRR),列 = Base、Bull、Bear,以及 Bull 减 Base 和 Bear 减 Base 的差值列。

Checks 标签页

  • 选择器在范围内:=AND(Cover!B2>=1,Cover!B2<=3,Cover!B2=INT(Cover!B2)) 结果为 TRUE。
  • 每个驱动因素的三个案例都已填充:=COUNTBLANK(ScenarioInputs!B5:D12)=0 结果为 TRUE。
  • 激活列匹配选择器:对于一个示例驱动因素,=(ScenarioInputs!E5=CHOOSE(Cover!B2,ScenarioInputs!B5,ScenarioInputs!C5,ScenarioInputs!D5)) 结果为 TRUE。

openpyxl 构建说明

  • 使用 openpyxl.worksheet.datavalidation.DataValidation(type="list", formula1='"1,2,3"') 添加下拉菜单,然后 ws.add_data_validation(dv) 并 dv.add(ws["B2"])。
  • 将每个激活值和链接单元格写为公式字符串,绝不写为已解析的案例数字;数值只在重新计算后才会出现。
  • 如果在下拉菜单中使用命名案例,请保留一个隐藏的映射,以便选择器仍然解析为整数供 CHOOSE/INDEX 使用;在选择器中混用文本和索引会破坏公式。
  • 为选择器单元格填充独特的背景色并添加粗边框,以便审查者立即看到这个单一的控制单元格。

方向合理性检查

  • Bull 案例不应在主要指标上产生比 Base 案例更差的结果,Bear 案例不应优于 Base 案例;如果出现这种情况,那么某个驱动因素在不同案例下的值很可能在列间放错了位置。
  • 在 Outputs 标签页添加一个可选的非正式检查,将每个差值的符号与预期方向进行比较,这样在重新计算时就能发现交换的列,而不是等到审查时才发现。

公式和格式约定

  • 使用蓝色字体表示 Base/Bull/Bear 的输入值和选择器单元格。
  • 使用黑色字体表示标签页内的公式(激活值列的 CHOOSE/INDEX 函数、输出计算)。
  • 使用绿色字体表示跨标签页链接,例如模型中的 =ScenarioInputs!E5。
  • 在应有公式的地方不使用硬编码:激活列和模型假设始终是公式,而不是重新键入的案例值。
  • 每行或每列使用一个一致的公式:激活列使用相同的 CHOOSE/INDEX 模式;对比列使用相同的输出公式。
  • 数字格式:比率 0.0%,货币 #,##0,倍数 0.00x。用填充色高亮显示选择器单元格,使其易于找到和切换。

与内置“方案管理器”的权衡

Excel 内置的“方案管理器”将案例值存储在对话框中,在工作表上不可见,在显示时会覆盖实时输入,并且容易与模型不同步。而一个可见的切换模块将每个案例保留在网格上,使激活值的拉取成为一个可追踪的公式,并允许审查者并排查看所有三个结果,无需打开任何菜单。它更易于审计,并且能够承受复制、审查和版本控制。

检查

参见上文的 Checks 标签页:选择器值在 1..3 之间且为整数,没有空白案例单元格,激活值等于选择器对应的案例值。所有三项检查必须返回 TRUE。

重新计算并验证

使用 openpyxl 保存,无头重新计算(例如 libreoffice --headless --convert-to xlsx),以便解析 CHOOSE/INDEX 和跨工作表链接。重新加载,扫描 #REF!、#DIV/0!、#VALUE!、#NAME? 错误。将选择器切换到 1、2、3,确认输出随之变化,并且每个设置下的激活值检查都通过。修正并循环,直到无误,然后交付。

需要收集的输入

  • 模型的路径以及每个驱动因素的假设单元格地址。
  • 每个驱动因素的 Base、Bull 和 Bear 值。
  • 需要比较的关键输出指标及其单元格。
  • 对比方式应为并行计算(实时)还是捕获快照。

示例

假设驱动因素:收入增长率(Base 4%、Bull 8%、Bear 1%),毛利率(Base 55%、Bull 58%、Bear 50%)。选择器 Cover!B2 = 2 选择 Bull,因此 ScenarioInputs!E5 =CHOOSE(2,4%,8%,1%) = 8% 流入 Model!B6。Outputs 标签页显示 NPV(假设单位)为:Base 760、Bull 1,140、Bear 410,并带有 Bull 减 Base 的差值 380,所有结果同时可见。

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

andreworia/assumption-registry-builder

Creates a structured assumption register for any Excel model with columns for name, category, base value, source, Bull/Bear values, sensitivity rank, and owner, plus a formula for computing sensitivity rank from Data Table outputs.

andreworia/data-cleaning-for-excel

Turns pasted or exported data with mixed formats, blank rows, or duplicates into a clean, consistently formatted range ready for analysis. Use it right after pasting raw data into a worksheet.

andreworia/formula-audit-checker

Provides a systematic audit checklist for Excel model formula logic, hardcoded values, circular references, and error handling, with step-by-step instructions for using Excel's native auditing tools.

andreworia/inputs-calcs-outputs-design

Enforces the three-tab separation principle for any Excel model, producing a full design for a dedicated Inputs tab, one or more Calculations tabs, and a clean Outputs tab with a conventions checklist.

andreworia/model-architecture-template

Defines the master tab structure, naming conventions, color codes, number formats, and print area setup for any new strategy or finance Excel model, serving as the structural template before any content is added.

andreworia/output-summary-tab

Designs the executive summary tab of an Excel model with KPI tiles, a narrative block, a sensitivity summary, and an assumption log, formatted for print or screenshot use in a board pack.

andreworia/pivot-table-builder

Specifies and builds a pivot table from a flat data range, choosing rows, columns, values, and filters. Use it when you have raw tabular data and need a summary view without building it cell by cell.

andreworia/revenue-build

Builds a driver-based revenue forecast .xlsx with live formulas across separate drivers, build, and output tabs plus checks, rolling a customer or units schedule (beginning, adds, churn, ending) into revenue with Base/Bull/Bear scenario toggles. Use when someone needs a bottom-up revenue model, an ARR build, or a driver-based forecast for planning or a board deck. Do not trigger for editing an existing workbook through the Claude for Excel add-in.

andreworia/sensitivity-tables

Builds one- and two-variable sensitivity (Data Table) analysis on a model output in a .xlsx with live formulas and a recalc check, then delivers the workbook. Use when someone wants to see how an output (NPV, IRR, EPS, margin) moves as one or two inputs change. Do not trigger for editing an existing workbook through the Claude for Excel add-in.

andreworia/sensitivity-tornado

Ranks variable sensitivities to a key output and builds a tornado chart by swinging each input over a defined range, computing output impact, and producing a horizontal bar chart data structure.

andreworia/unit-economics

Builds a unit-economics and cohort .xlsx with live formulas across separate assumptions, cohort, and output tabs plus checks, computing CAC, LTV, LTV/CAC, and CAC payback from a monthly cohort retention grid. Use when someone needs unit economics, an LTV/CAC analysis, a payback model, or a cohort retention build. Do not trigger for editing an existing workbook through the Claude for Excel add-in.

相关技能