XLCS房产全成本测算模版-销售动态分析模块介绍
XLCS房产项目全成本测算模版 — 销售动态分析模块介绍
销售动态分析模块是 XLCS 房产项目全成本测算模板中的销售去化类敏感性分析工具,主要用于围绕项目销售节奏相关参数,批量模拟不同变化情景下项目核心财务指标的变化情况。
该模块与 GenerateSalesPlan 销售去化计划生成模块联动,但不再粗暴切换全局去化模式,而是尊重 02基本指标录入 中每行产品自身配置的独立去化模式,仅调整对应模式下的参数单元格,从而实现更加稳定、真实、可控的销售动态分析。
当前版本为 v7.0 优化重构版。
📌 核心功能一览
| 功能 | 说明 |
|---|---|
| 支持销售动态敏感性分析 | 对销售节奏相关变量进行批量情景测算 |
| 尊重产品独立去化模式 | 不再强制切换所有产品模式,保留 D137:D160 每行配置 |
| 五类变量批量分析 | 支持开盘时间、去化率、住宅套数、商业套数、销售月数等变量 |
| 每个变量最多 10 组变化 | 自动读取 D4:M8 的变化区间 |
| 最多生成 50 条结果 | 5 个变量 × 10 个变化值 |
| 模式基准独立缓存 | 按“按去化率 / 按套数 / 按月数”等模式分别缓存基准结果 |
| 0%变化复用基准 | 避免重复计算,提高运行效率 |
| 自动调用销售计划生成 | 每次调整后自动运行 GenerateSalesPlan 刷新模型 |
| 自动抓取财务指标 | 从第11行 F:M 获取资金峰值、IRR、NPV 等核心指标 |
| 输入数据自动备份恢复 | 分析完成或报错后恢复原始参数和公式 |
| 支持取消分析 | 提供取消按钮,运行中可发送取消请求 |
| 第11行公式保护 | 防止分析过程中指标公式被覆盖 |
| 状态栏进度提示 | 实时显示变量、次数、进度和耗时 |
| 调试工具完善 | 提供基准值检查、公式检查、财务指标调试等工具 |
⚙️ 模块基本信息
| 项目 | 内容 |
|---|---|
| 模块名称 | 销售动态分析模块 |
| 作者 | XLCS-Jgwy |
| 日期 | 2026-06-04 |
| 当前版本 | v7.0 优化重构 |
| 主过程 | SalesDynamicAnalysis |
| 快捷入口 | RunSalesDynamicAnalysis_Final |
| 取消入口 | CancelSalesAnalysis_Final |
| 分析表 | Sheet80 |
| 参数输入表 | 02基本指标录入 / Sheet9 |
| 依赖模块 | GenerateSalesPlan |
| 最大结果数 | 50 条 |
| 输出区域 | B12:M500 |
| 指标来源 | 第11行 F:M |
🚀 适用场景
销售动态分析模块适用于以下典型场景:
销售节奏敏感性分析
- 分析开盘时间提前或延后、去化率变化、销售月数变化等对现金流和收益指标的影响。
现金流压力测试
- 模拟销售放缓、开盘推迟、月销套数下降等不利情形下项目资金峰值和回正期变化。
销售策略比选
- 对比快销、稳销、慢销等不同销售策略对 IRR、NPV、资金峰值的影响。
投资决策支持
- 在拿地测算或项目立项阶段,快速判断销售节奏对项目投资价值的影响。
敏感性分析批量输出
- 自动生成多变量、多情景测算结果,可用于图表展示和汇报材料。
🧩 功能入口说明
| 宏名称 | 功能 | 说明 |
|---|---|---|
SalesDynamicAnalysis |
主分析程序 | 执行完整销售动态分析 |
RunSalesDynamicAnalysis_Final |
快捷运行入口 | 按钮推荐绑定该宏 |
CancelSalesAnalysis_Final |
取消分析 | 运行中发送取消请求 |
CheckBaseValue |
检查基准值 | 调试变量基准值和格式 |
CheckRow11Formulas |
检查第11行公式 | 在即时窗口输出 F:M 公式状态 |
DebugFinancialMetrics |
调试财务指标 | 弹窗查看第10、11、12行指标信息 |
AddSalesAnalysisButtons_Final |
添加按钮 | 自动添加运行、取消、检查按钮 |
🧭 操作流程
第一步:准备分析工作表
销售动态分析模块运行在 Sheet80 对应的分析表中。
分析表中需要设置:
| 区域 | 内容 |
|---|---|
| B4:B8 | 分析变量名称 |
| C4:C8 | 各变量基准值 |
| D4:M8 | 各变量变化范围 |
| F11:M11 | 当前方案核心财务指标公式 |
| B12:M500 | 分析结果输出区 |
第二步:设置变量名称
在 B4:B8 中设置 5 个销售动态分析变量。
常见变量示例:
| 行 | 变量名称示例 | 对应参数 |
|---|---|---|
| B4 | 开盘时间 | K128 |
| B5 | 月去化率 | I131 |
| B6 | 住宅月去化套数 | K131 |
| B7 | 商业月去化套数 | M131 |
| B8 | 销售去化月数 | O131 |
模块会根据变量名称自动判断其对应的去化模式和输入单元格。
第三步:设置基准值
在 C4:C8 中填写对应变量的基准值。
| 变量类型 | 基准值要求 |
|---|---|
| 开盘时间 | 有效日期 |
| 去化率 | 数值或百分比 |
| 住宅月去化套数 | 数值 |
| 商业月去化套数 | 数值 |
| 销售去化月数 | 数值 |
模块会自动校验基准值是否合法。
第四步:设置变化范围
在 D4:M8 中填写每个变量的 10 组变化值。
例如:
去化率 / 套数类变量
使用百分比变化:
| 变化值 | 含义 |
|---|---|
| -20% | 基准值下降 20% |
| -10% | 基准值下降 10% |
| 0% | 使用基准值 |
| 10% | 基准值上升 10% |
| 20% | 基准值上升 20% |
计算逻辑:
1 | 调整后值 = 基准值 × (1 + 变化值) |
开盘时间类变量
使用月份偏移:
| 变化值 | 含义 |
|---|---|
| -2 | 开盘提前 2 个月 |
| -1 | 开盘提前 1 个月 |
| 0 | 基准开盘时间 |
| 1 | 开盘延后 1 个月 |
| 2 | 开盘延后 2 个月 |
计算逻辑:
1 | 调整后日期 = 基准日期 + 变化月份 |
销售月数类变量
使用绝对增减月数:
1 | 调整后月数 = 基准月数 + 变化值 |
第五步:运行分析
推荐运行:
1 | Call RunSalesDynamicAnalysis_Final |
或直接运行主过程:
1 | Call SalesDynamicAnalysis |
系统会自动完成:
- 校验变量名称和基准值
- 备份输入参数、模式单元格和第11行公式
- 初始化输出区域
- 按变量识别对应销售去化模式
- 为每种涉及的模式预先计算基准指标
- 逐变量、逐变化值调整参数
- 调用
GenerateSalesPlan(True)重新生成销售计划 - 等待模型计算完成
- 抓取 F11:M11 财务指标
- 写入 B12:M500 结果区域
- 恢复原始输入参数和公式
- 重新生成一次销售计划,恢复模型状态
📊 输入与输出区域
输入区域
| 区域 / 单元格 | 内容 | 说明 |
|---|---|---|
| B4:B8 | 变量名称 | 模块根据名称识别变量类型 |
| C4:C8 | 基准值 | 各变量初始参数 |
| D4:M8 | 变化范围 | 每个变量最多 10 组变化 |
| F11:M11 | 财务指标公式 | 用于抓取每次测算结果 |
被调整的目标参数
模块不会直接批量修改产品行去化模式,而是仅修改对应参数单元格。
| 变量类型 | 对应单元格 | 所属工作表 |
|---|---|---|
| 开盘时间 | K128 | 02基本指标录入 |
| 去化率 | I131 | 02基本指标录入 |
| 住宅月去化套数 | K131 | 02基本指标录入 |
| 商业月去化套数 | M131 | 02基本指标录入 |
| 销售去化月数 | O131 | 02基本指标录入 |
| 当前模式输入 | E131 | 02基本指标录入 |
输出区域
分析结果从第12行开始输出。
| 列 | 字段 | 说明 |
|---|---|---|
| A列 | 序号 | 自动生成 |
| B列 | 变量 | 当前分析变量 |
| C列 | 基准值 | 当前变量原始值 |
| D列 | 变化范围 | 当前情景变化值 |
| E列 | 调整后值 | 应用变化后的参数 |
| F列 | 资金峰值(万元) | 来自 F11 |
| G列 | 峰值时间 | 来自 G11 |
| H列 | IRR(税前) | 来自 H11 |
| I列 | IRR(税后) | 来自 I11 |
| J列 | 折现率(不含融资)NPV(万元) | 来自 J11 |
| K列 | 折现率(含融资)NPV(万元) | 来自 K11 |
| L列 | 现金流回正期(含融资,月) | 来自 L11 |
| M列 | 年自有资金投资回报率 | 来自 M11 |
🔍 功能详解
1. 不再全局切换产品去化模式
旧版分析可能通过修改全局模式影响所有产品,容易破坏不同产品行的个性化设置。
v7.0 重构后,模块说明中明确:
1 | 不再切换全局去化模式 |
也就是说,产品行自身设置为:
- 按默认
- 按去化率
- 按月数
- 按套数
都会被保留。
模块只调整与分析变量对应的参数单元格,使分析结果更贴合真实模型配置。
2. 按变量名称自动识别模式
模块通过变量名称判断目标模式。
核心逻辑:
1 | If InStr(cleanName, "去化率") > 0 Then |
识别规则如下:
| 变量名称关键词 | 识别模式 |
|---|---|
| 去化率 | 按去化率 |
| 住宅 + 套数 / 套 | 按套数 |
| 商业 + 套数 / 套 | 按套数 |
| 月数 | 按月数 |
| 其他 | 默认按去化率 |
3. 按变量名称自动映射输入单元格
模块根据变量名称自动找到需要调整的参数位置。
| 变量关键词 | 输入单元格 |
|---|---|
| 开盘 | K128 |
| 去化率 | I131 |
| 住宅 + 套数 / 套 | K131 |
| 商业 + 套数 / 套 | M131 |
| 销售 / 去化 + 月数 / 月 | O131 |
对应函数:
1 | GetInputCell(varName) |
这样用户只需在 B4:B8 设置变量名称,模块即可自动完成参数映射。
4. 模式基准独立缓存
模块会先扫描 5 个变量涉及哪些去化模式,然后分别计算一次基准结果并缓存。
例如:
| 变量 | 对应模式 |
|---|---|
| 去化率 | 按去化率 |
| 住宅月去化套数 | 按套数 |
| 销售去化月数 | 按月数 |
模块会分别缓存:
1 | 按去化率 基准指标 |
缓存结构:
1 | m_BaselineCache = CreateObject("Scripting.Dictionary") |
键值:
1 | 模式名 -> 指标数组(1~8) |
这样不同变量在 0% 变化时,可以复用对应模式下的基准指标。
5. 0% 变化复用基准结果
当变化值为 0 时,模块不会重复运行销售计划,而是直接复用当前模式基准结果。
核心逻辑:
1 | If changeValues(j) = 0 And Not IsEmpty(baselineMetrics(1)) Then |
优势:
- 避免重复计算
- 缩短运行时间
- 保证基准结果一致
- 降低大型模型批量分析压力
6. 自动调用 GenerateSalesPlan
每次非 0 变化值写入参数后,模块会调用:
1 | Application.Run "GenerateSalesPlan", True |
其中 True 表示以静默模式运行,避免弹窗打断批量分析。
调用过程封装在:
1 | RunGenerateSalesPlanSafe |
该函数还会:
- 临时解除
SuppressGenerateSalesPlan - 调用
GenerateSalesPlan - 主动执行
Application.Calculate - 恢复第11行公式
- 等待计算完成
- 返回是否成功
7. 支持超时控制
模块内置两个超时时间:
1 | Private Const GENERATE_TIMEOUT_SECONDS As Double = 120 |
含义:
| 常量 | 默认值 | 说明 |
|---|---|---|
GENERATE_TIMEOUT_SECONDS |
120秒 | 生成销售计划最大等待时间 |
CALC_TIMEOUT_SECONDS |
60秒 | 模型计算最大等待时间 |
如果模型过大或计算较慢,模块会尽量等待计算完成,避免抓取未更新的指标。
8. 输入和公式自动备份恢复
模块定义了轻量备份结构:
1 | Private Type CellBackup |
运行时会备份:
- 五个变量对应的输入单元格
- 模式单元格
E131 - 第11行 F:M 指标公式
- 其他运行中可能被改写的单元格
分析完成或报错后统一执行:
1 | RestoreAllBackups |
保证模型恢复到分析前状态。
9. 第11行指标公式保护
第11行 F:M 是模块抓取财务指标的关键区域,因此提供双重保护:
- 使用通用备份系统备份单元格
- 使用专门数组备份公式状态
相关过程:
1 | BackupRow11Formulas ws |
在 GenerateSalesPlan 运行后,模块还会主动恢复第11行公式,防止被其他过程覆盖。
10. 支持取消分析
模块提供全局取消变量:
1 | Public CancelAnalysis As Boolean |
运行取消宏:
1 | Call CancelSalesAnalysis_Final |
会设置:
1 | CancelAnalysis = True |
主循环和等待计算过程中会检查该状态,尽量安全退出。
11. 防止重复运行
模块使用:
1 | Public AnalysisStarted As Boolean |
如果分析已经运行,再次启动时会提示:
1 | 分析已在运行中,是否重新开始? |
避免重复点击按钮导致参数交叉修改或结果混乱。
12. 结果格式自动处理
模块会根据变量类型自动设置格式。
| 字段 | 格式 |
|---|---|
| 开盘时间 | yyyy/m/d |
| 去化率 | 0.00% |
| 套数 / 月数 | #,##0.0 |
| 变化范围(比例类) | +0.00%;-0.00% |
| 变化范围(月份类) | 0 |
| IRR | 0.00% |
| NPV / 资金峰值 | #,##0 |
| 峰值时间 | yyyy/m/d |
🧱 模块结构说明
主流程
| 过程 / 函数名 | 说明 |
|---|---|
SalesDynamicAnalysis |
主程序,负责初始化、备份、分析、输出和恢复 |
RunSalesAnalysisFinal |
核心分析循环,执行变量和变化值遍历 |
RunSalesDynamicAnalysis_Final |
按钮快捷入口 |
CancelSalesAnalysis_Final |
取消分析入口 |
变量识别与计算
| 函数名 | 说明 |
|---|---|
GetModeByVariableName |
根据变量名称识别去化模式 |
GetInputCell |
根据变量名称映射输入单元格 |
CalculateAdjustmentByName |
根据变量类型计算调整后值 |
GetBaseValue |
获取并处理基准值 |
ShouldSkipVariableByName |
判断变量是否应跳过 |
NormalizeName |
统一变量名称格式,兼容全角括号 |
备份与恢复
| 过程名 | 说明 |
|---|---|
InitBackupSystem |
初始化备份系统 |
AddBackup |
添加单元格备份 |
RestoreAllBackups |
恢复全部备份 |
RestoreOneCellBackup |
恢复指定单元格 |
BackupRow11Formulas |
备份第11行公式 |
RestoreRow11Formulas |
恢复第11行公式 |
计算与结果
| 过程 / 函数名 | 说明 |
|---|---|
RunGenerateSalesPlanSafe |
安全调用销售计划生成模块 |
WaitUntilCalculationDone |
等待模型计算完成 |
CaptureFinancialMetrics |
抓取 F11:M11 财务指标 |
BuildOutputArray |
裁剪输出数组 |
FormatResults |
格式化输出结果 |
InitializeAnalysis |
初始化标题和输出区域 |
调试工具
| 过程名 | 说明 |
|---|---|
CheckBaseValue |
检查变量基准值、格式、公式等 |
CheckRow11Formulas |
输出第11行 F:M 公式状态 |
DebugFinancialMetrics |
查看财务指标当前值 |
AddSalesAnalysisButtons_Final |
自动添加分析按钮 |
DebugLog |
输出调试日志 |
⚙️ 关键参数说明
| 常量 / 变量 | 默认值 | 说明 |
|---|---|---|
DEBUG_MODE |
True | 是否输出调试日志 |
SHOW_FINISH_MSG |
False | 是否显示完成弹窗 |
MAX_RECORDS |
50 | 最大输出记录数 |
GENERATE_TIMEOUT_SECONDS |
120 | 销售计划生成超时 |
CALC_TIMEOUT_SECONDS |
60 | 计算等待超时 |
CancelAnalysis |
False | 是否取消分析 |
AnalysisStarted |
False | 是否正在运行 |
SuppressGenerateSalesPlan |
True/False | 外部销售计划调用抑制标志 |
🧪 使用示例
运行销售动态分析
1 | Sub RunAnalysis() |
取消销售动态分析
1 | Sub CancelAnalysis() |
添加操作按钮
1 | Sub AddButtons() |
执行后会在分析表上添加:
- 运行销售动态分析
- 取消
- 检查基准值
- 检查第11行公式
📅 版本说明
| 版本 | 核心改进 |
|---|---|
| v7.0 | 优化重构,不再切换全局去化模式,尊重每行产品独立模式配置,增加按模式基准缓存 |
| v6.x | 增强 GenerateSalesPlan 联动与计算等待 |
| v5.x | 增加第11行公式保护和结果格式化 |
| v4.x | 增加取消分析与运行状态控制 |
| v3.x | 支持多变量批量动态分析 |
| v1.x-v2.x | 初始销售动态敏感性分析逻辑 |
当前版本:v7.0 优化重构版
🔧 调试与维护建议
1. 提示找不到 02基本指标录入
请检查:
- 工作簿中是否存在
02基本指标录入 Sheet9是否绑定到基础指标录入表- 工作表名称是否被修改
模块会先按名称查找:
1 | ThisWorkbook.Worksheets("02基本指标录入") |
如果找不到,再尝试使用:
1 | Sheet9 |
2. 提示变量名称为空
请检查 B4:B8 是否完整填写变量名称。
每一行变量都必须有名称,否则验证不通过。
3. 提示基准值为空或格式错误
请检查 C4:C8。
| 变量类型 | 要求 |
|---|---|
| 开盘时间 | 必须是有效日期或有效日期序列值 |
| 去化率 / 套数 / 月数 | 必须是数值 |
可以运行:
1 | Call CheckBaseValue |
查看详细单元格信息。
4. 变量无法映射输入单元格
说明变量名称中缺少模块可识别的关键词。
建议使用以下关键词:
| 变量类型 | 建议关键词 |
|---|---|
| 开盘时间 | 包含“开盘” |
| 去化率 | 包含“去化率” |
| 住宅套数 | 包含“住宅”和“套数” |
| 商业套数 | 包含“商业”和“套数” |
| 销售月数 | 包含“销售”或“去化”,并包含“月数” |
5. 分析结果没有变化
可能原因:
- 当前模型产品行未启用对应去化模式
- 变量对应参数没有被销售计划使用
GenerateSalesPlan未正常执行- 第11行指标公式未关联销售计划结果
- 变化值均为 0
- 基准值为 0 被模块跳过
建议检查:
1 | Call CheckRow11Formulas |
6. GenerateSalesPlan 执行失败或超时
请检查:
GenerateSalesPlan宏是否存在- 销售去化模块是否可独立正常运行
GenerateSalesPlan是否支持静默参数True- 工作簿计算是否过慢
- 是否存在其他宏锁定或弹窗
7. 为什么运行后模型参数会恢复?
这是模块设计目标。
销售动态分析属于情景模拟工具,不应永久修改基础模型。因此模块在运行前备份所有受影响单元格,运行结束后自动恢复。
💡 常见问题
Q:这个模块会改变产品行的去化模式吗?
A:不会。v7.0 明确不再切换全局去化模式,并尊重 D137:D160 中每行产品自己的模式配置。
Q:模块会修改哪些核心参数?
A:仅根据变量类型修改以下单元格:
1 | K128、I131、K131、M131、O131、E131 |
并在分析完成后恢复。
Q:为什么 0% 变化不重新计算?
A:因为模块已经为对应模式预先计算并缓存了基准指标。0% 变化直接复用基准结果,可以减少重复计算并提高速度。
Q:最多可以分析多少条记录?
A:默认最多 50 条,即 5 个变量 × 每个变量 10 组变化值。
对应常量:
1 | Private Const MAX_RECORDS As Long = 50 |
Q:如何中途取消分析?
A:运行:
1 | Call CancelSalesAnalysis_Final |
或点击模块添加的“取消”按钮。
Q:为什么有些变量会被跳过?
A:非开盘类变量如果基准值为空或为 0,会被模块跳过,避免无意义或错误计算。
Q:开盘时间的变化值如何填写?
A:填写月份偏移量。例如:
1 | -2 表示提前2个月 |
Q:去化率和套数的变化值如何填写?
A:填写比例变化,例如:
1 | -10% 表示下降10% |
计算公式:
1 | 调整后值 = 基准值 × (1 + 变化值) |
Q:销售月数的变化值如何填写?
A:填写增减月数。例如:
1 | -2 表示缩短2个月 |
计算公式:
1 | 调整后月数 = 基准月数 + 变化值 |
Q:支持 WPS 吗?
A:模块主要使用标准 VBA 对象和 Application.Run 调用方式,通常可在 WPS 中运行。但由于依赖 GenerateSalesPlan 和全模型计算,建议正式使用前先进行测试。
⚠️ 注意事项
- 使用前请确保已启用宏。
- 请确认
GenerateSalesPlan销售去化模块可独立正常运行。 - 请确认分析表
Sheet80绑定正确。 - 请确认
02基本指标录入或Sheet9存在。 - B4:B8 必须填写变量名称。
- C4:C8 必须填写有效基准值。
- D4:M8 建议填写数值型变化范围。
- 第11行 F:M 应保留财务指标公式。
- 分析运行期间不要手动修改工作簿。
- 如果模型较大,运行时间可能较长,请等待状态栏提示完成。
- 若需要中途停止,请使用取消按钮,不建议强制中断 Excel / WPS。
- 建议首次运行前保存并备份文件。
📞 技术支持
官网:
求助建议: http://xlcs.de/
邮件联系: admin@fdc.sd
📷 模块展示

✅ 总结
XLCS 销售动态分析模块通过批量调整开盘时间、去化率、月去化套数、销售月数等关键销售参数,自动生成多情景下的资金峰值、IRR、NPV、现金流回正期等核心指标结果。
v7.0 版本最大的改进是:不再强制切换全局去化模式,而是尊重产品行独立配置,仅调整对应参数,并通过模式基准缓存提升计算效率和结果稳定性。
对于房产项目投资测算、销售策略比选、现金流压力测试和汇报分析而言,该模块是 XLCS 全成本测算模板中重要的销售敏感性分析工具。
````









