XLCS房产全成本测算模版-售价敏感性分析模块介绍
XLCS房产项目全成本测算模版 — 售价敏感性分析模块介绍
售价敏感性分析模块是 XLCS 房产项目全成本测算模板中的核心分析组件之一,主要用于快速测算不同售价变动情景下,项目关键经营指标的变化情况。
模块支持用户自定义基准售价,并通过产品代码精确匹配,将不同售价方案传输到 02基本指标录入 工作表中参与全模型计算。系统会自动完成调价、传输、重算、结果记录和数据恢复,适用于投资测算、利润测算、售价策略比选和项目风险分析等场景。
当前版本为 v8.7 优化稳定版,重点增强了数据安全、匹配准确性、公式恢复能力和 WPS / Excel 兼容计算稳定性。
📌 核心功能一览
| 功能 | 说明 |
|---|---|
| 15组售价方案批量测算 | 自动循环处理 B5:B19 中的售价变动方案 |
| 用户自定义基准价 | 支持以 P 列价格作为各产品基准售价 |
| 按产品代码精确匹配 | 通过产品代码将分析表价格精准传输至基础指标表 |
| 支持住宅与商业 | 分别处理住宅区和商业区产品售价 |
| 支持装修类型区分 | 按“毛坯 / 精装”分别写入 O 列或 P 列 |
| 条件式参与调价 | 仅对标记为“参与调价”的产品类型执行价格调整 |
| 自动备份目标数据 | 调价前备份基础指标表原售价数据 |
| 自动恢复原始数据 | 分析完成或报错后自动恢复原始输入值 |
| P列公式保护 | 执行前备份 P4:P24 公式,执行后恢复 |
| 自动重算模型 | 每个售价方案都会触发模型计算 |
| 结果自动汇总 | 将关键测算结果输出到 C5:L19 |
| 状态栏进度提示 | 实时显示当前方案、进度和耗时 |
| 调试日志开关 | 支持 DEBUG_MODE 控制即时窗口输出 |
⚙️ 模块基本信息
| 项目 | 内容 |
|---|---|
| 模块名称 | 售价敏感性分析模块 |
| 作者 | XLCS-Jgwy |
| 日期 | 2026-04-09 |
| 当前版本 | v8.7 |
| 模块定位 | 售价变动情景批量测算 |
| 分析工作表 | 11.4售价敏感性分析 |
| 目标输入表 | 02基本指标录入 |
| 输出结果区域 | C5:L19 |
| 方案输入区域 | B5:B19 |
| 最大方案数量 | 15 组 |
🚀 适用场景
售价敏感性分析模块适合以下典型应用场景:
项目投资测算
- 测算售价上涨或下降后,项目利润、收益率等指标的变化。
拿地阶段方案比选
- 快速判断不同销售单价假设下的地价承受能力和利润空间。
销售定价策略分析
- 分析住宅、商业不同价格调整幅度对项目整体收益的影响。
风险压力测试
- 测算售价下跌 100 元/㎡、300 元/㎡、500 元/㎡等场景下项目是否仍可达标。
汇报材料数据支撑
- 自动生成多档价格变动下的指标矩阵,便于形成图表和决策建议。
🧩 功能入口说明
| 宏名称 | 功能 | 说明 |
|---|---|---|
售价敏感性分析 |
执行售价敏感性分析 | 主入口,一键完成 15 组售价方案测算 |
调用方式:
Call 售价敏感性分析
🧭 操作流程
第一步:准备分析工作表
确认工作簿中存在以下工作表:
| 工作表 | 作用 |
|---|---|
11.4售价敏感性分析 |
敏感性分析操作与结果展示表 |
02基本指标录入 |
模型基础售价输入表 |
模块支持工作表名称模糊查找。如果无法完全匹配工作表名称,会尝试查找名称中包含目标关键字的工作表。
第二步:设置售价变动方案
在 11.4售价敏感性分析 工作表的 B5:B19 中填写售价变动值。
示例:
| 单元格 | 售价变动 |
|---|---|
| B5 | -1000 |
| B6 | -800 |
| B7 | -600 |
| B8 | -400 |
| B9 | -200 |
| B10 | 0 |
| B11 | 200 |
| B12 | 400 |
| B13 | 600 |
| B14 | 800 |
| B15 | 1000 |
模块会将这些数值作为 delta,即相对于基准价的调整金额。
例如:
调整后售价 = 基准售价 + delta
第三步:设置产品是否参与调价
模块通过指定单元格判断对应产品类型是否参与调价。
| 控制单元格 | 对应对象 | 判断条件 |
|---|---|---|
| D20 | 住宅1 | 单元格内容为“参与调价” |
| G20 | 住宅2 | 单元格内容为“参与调价” |
| K20 | 住宅3 | 单元格内容为“参与调价” |
| M20 | 住宅4 | 单元格内容为“参与调价” |
| D22 | 商业 | 单元格内容为“参与调价” |
只有对应控制单元格为:
参与调价
时,模块才会对该类产品进行售价调整。
第四步:确认基准售价
模块以 11.4售价敏感性分析 表中的 P 列作为基准售价来源。
| 单元格 | 含义 |
|---|---|
| P4 | 住宅1基准售价 |
| P5 | 住宅2基准售价 |
| P6 | 住宅3基准售价 |
| P7 | 住宅4基准售价 |
| P19 | 商业基准售价1 |
| P20 | 商业基准售价2 |
每轮方案开始前,模块都会先将 P 列价格重置为基准价,再叠加当前方案的售价变动值。
第五步:执行敏感性分析
运行宏:
Call 售价敏感性分析
系统会自动完成以下动作:
- 初始化运行环境
- 清空旧结果区域
C5:L19 - 保存 P 列基准售价
- 备份 P4:P24 原公式
- 备份
02基本指标录入中原始售价数据 - 逐一读取 B5:B19 中的售价变动方案
- 根据“参与调价”条件调整售价
- 按产品代码传输价格到目标表
- 触发模型重新计算
- 将关键结果记录到当前方案行
- 循环完成全部 15 组方案
- 恢复目标表原始售价
- 恢复 P 列公式
- 恢复 Excel / WPS 应用状态
📊 输入与输出区域
输入区域
| 区域 / 单元格 | 内容 | 说明 |
|---|---|---|
| B5:B19 | 售价变动值 | 15 组敏感性分析方案 |
| P4:P7 | 住宅基准售价 | 住宅产品基准价格 |
| P19:P20 | 商业基准售价 | 商业产品基准价格 |
| D20/G20/K20/M20 | 住宅是否调价 | 内容为“参与调价”时生效 |
| D22 | 商业是否调价 | 内容为“参与调价”时生效 |
| N4:S7 | 住宅产品传输区 | 包含产品代码、价格、装修类型 |
| N19:S20 | 商业产品传输区 | 包含产品代码、价格、装修类型 |
目标写入区域
模块会将分析表中的价格传输到 02基本指标录入 表。
| 产品类型 | 产品代码匹配区域 | 毛坯价格写入 | 精装价格写入 |
|---|---|---|---|
| 住宅 | C188:C201 | O188:O201 | P188:P201 |
| 商业 | C203:C212 | O203:O212 | P203:P212 |
传输规则:
- 根据产品代码匹配目标表对应行
- 装修类型为
毛坯时,写入 O 列 - 装修类型为
精装时,写入 P 列 - 产品代码不存在时,不写入并输出调试提示
- 装修类型无法识别时,不写入并输出调试提示
输出结果区域
| 输出区域 | 数据内容 | 说明 |
|---|---|---|
| C5:C19 | 取自 C4 | 每个方案对应的核心指标 |
| D5:D19 | 取自 P18 | 每个方案对应的汇总指标 |
| E5:E19 | 取自 P25 | 每个方案对应的汇总指标 |
| F5:L19 | 取自 F4:L4 | 多项关键指标结果 |
每处理一个售价方案,模块都会将当前模型计算后的关键指标写入对应行。
🔍 功能详解
1. 15组方案自动循环
模块默认处理 B5:B19,共 15 组售价变动方案。
核心循环逻辑:
For i = 5 To 19
delta = CDbl(Val(currentSheet.Range("B" & i).Value2))
...
Next i
每一行代表一个独立的售价情景。
例如:
| 行号 | delta | 说明 |
|---|---|---|
| 5 | -1000 | 售价下调 1000 |
| 10 | 0 | 基准售价 |
| 15 | 1000 | 售价上调 1000 |
2. 基准价保护与重置
每次方案计算前,模块都会调用:
ResetPValues currentSheet, baseValues
这样可以确保每组方案都是基于原始基准价叠加变化值,而不是在上一轮结果上继续叠加。
正确逻辑:
方案1 = 基准价 + delta1
方案2 = 基准价 + delta2
方案3 = 基准价 + delta3
避免错误逻辑:
方案1 = 基准价 + delta1
方案2 = 方案1 + delta2
方案3 = 方案2 + delta3
该设计显著提升了敏感性分析结果的准确性。
3. 条件式参与调价
模块通过 IsConditionActive 判断某类产品是否参与调价:
Private Function IsConditionActive(ByVal rng As Range) As Boolean
IsConditionActive = (Trim$(CStr(rng.Value2)) = "参与调价")
End Function
只有标记为 参与调价 的产品才会执行:
调整后价格 = 基准价格 + delta
这使得用户可以灵活控制:
- 只调整住宅
- 只调整商业
- 只调整某一类住宅产品
- 同时调整住宅和商业
- 多产品组合调价
4. 住宅与商业分别处理
住宅调价区域:
| 控制单元格 | 价格单元格 |
|---|---|
| D20 | P4 |
| G20 | P5 |
| K20 | P6 |
| M20 | P7 |
商业调价区域:
| 控制单元格 | 价格单元格 |
|---|---|
| D22 | P19、P20 |
其中商业调价会同时调整 P19 和 P20:
.Range("P19").Value2 = baseDict("P19") + delta
.Range("P20").Value2 = baseDict("P20") + delta
5. 按产品代码精确匹配
模块不是按照固定行号直接写入价格,而是先建立目标表产品代码索引。
核心逻辑:
rowMap(productCode) = tgtStartRow + i - 1
再根据源数据中的产品代码查找目标行。
优势:
- 产品顺序变化后仍可正确匹配
- 不依赖固定排列位置
- 降低误传价格风险
- 更适合大型模板维护和版本迭代
6. 装修类型区分写入
模块读取源数据中的装修类型,并按以下规则写入目标表:
| 装修类型 | 写入列 |
|---|---|
| 毛坯 | O列 |
| 精装 | P列 |
对应代码逻辑:
Select Case decorationType
Case "毛坯"
tgt.Cells(targetRow, "O").Value2 = price
Case "精装"
tgt.Cells(targetRow, "P").Value2 = price
End Select
这使得同一产品可以根据不同装修口径分别维护售价。
7. 自动备份与恢复目标售价
执行分析前,模块会备份 02基本指标录入 中的原始售价数据:
| 区域 | 内容 |
|---|---|
| O188:O201 | 住宅毛坯售价 |
| P188:P201 | 住宅精装售价 |
| O203:O212 | 商业毛坯售价 |
| P203:P212 | 商业精装售价 |
分析完成或发生错误后,会自动恢复这些原始数据。
这样可以保证:
- 敏感性分析不会污染基础输入表
- 报错中断后仍能恢复现场
- 原始测算模型保持稳定
- 用户无需手动回填原售价
8. P列公式备份与恢复
模块执行前会备份 P4:P24 的公式:
For i = 4 To 24
dict("P" & i) = sht.Range("P" & i).Formula
Next i
执行完成后再恢复:
sht.Range(CStr(key)).Formula = dict(key)
该设计用于保护敏感性分析表中的公式逻辑,避免在运行过程中因写值操作导致公式丢失。
9. WPS / Excel 计算稳定处理
模块采用 CalculateWPS 过程进行模型重算:
Application.Calculate
如果普通计算失败,或计算状态未完成,则自动尝试:
Application.CalculateFull
并配合:
DoEvents
提升 WPS 环境下的稳定性和响应性。
该机制适合大型房产测算模型,因为项目收益、现金流、税费、利润表等结果往往依赖大量联动公式。
10. 状态栏进度提示
运行过程中,模块会持续更新 Excel / WPS 状态栏:
[运行中] 处理方案3/15 20% (3/15) 耗时:2.6秒
用户可以实时看到:
- 当前正在处理的方案
- 已完成进度
- 总方案数量
- 累计耗时
11. 调试模式
模块提供调试开关:
Private Const DEBUG_MODE As Boolean = False
默认关闭。
如果需要排查产品匹配、价格传输、公式恢复等问题,可改为:
Private Const DEBUG_MODE As Boolean = True
开启后,即时窗口会输出类似信息:
10:25:31 |1| === 初始基准价(取自P列) ===
10:25:31 |2| P4=12000 P5=12500 P19=18000
10:25:32 |3| 住宅1调价:基准12000 + -500 → 11500
10:25:32 |4| 产品 A-01 (毛坯) 价格更新: 11500
10:25:33 |5| 方案1完成 P4=11500
🧱 模块结构说明
主入口
| 过程名 | 说明 |
|---|---|
售价敏感性分析 |
主过程,负责整体流程控制 |
核心模块
| 过程名 | 说明 |
|---|---|
StoreBaseValues |
保存基准售价 |
ResetPValues |
每轮计算前重置为基准售价 |
ApplyPriceDelta |
根据调价条件应用售价变动 |
数据备份模块
| 过程名 | 说明 |
|---|---|
BackupPFormulas |
备份 P4:P24 公式 |
RestorePFormulas |
恢复 P4:P24 公式 |
BackupTargetValues |
备份目标表原始售价 |
BackupRange |
备份指定区域 |
RestoreTargetValues |
恢复目标表原始售价 |
数据传输模块
| 过程名 | 说明 |
|---|---|
TransferToTarget |
控制住宅和商业数据传输 |
TransferProducts |
按产品代码和装修类型传输售价 |
工具模块
| 函数 / 过程名 | 说明 |
|---|---|
IsConditionActive |
判断是否参与调价 |
CalculateWPS |
执行模型重算 |
UpdateStatus |
更新状态栏 |
GetSheetByNameEx |
获取工作表,支持模糊匹配 |
DebugPrint |
调试输出 |
SafeToString |
安全转换为字符串 |
⚙️ 关键参数说明
| 参数 / 区域 | 说明 |
|---|---|
DEBUG_MODE |
调试日志开关,默认 False |
B5:B19 |
敏感性分析售价变动方案 |
C5:L19 |
敏感性分析结果输出区 |
P4:P7 |
住宅基准售价 |
P19:P20 |
商业基准售价 |
N4:S7 |
住宅产品源数据 |
N19:S20 |
商业产品源数据 |
C188:C201 |
目标表住宅产品代码 |
C203:C212 |
目标表商业产品代码 |
O列 |
毛坯售价 |
P列 |
精装售价 |
🧪 使用示例
执行售价敏感性分析
Sub RunPriceSensitivity()
Call 售价敏感性分析
End Sub
开启调试模式
将代码顶部参数修改为:
Private Const DEBUG_MODE As Boolean = True
然后打开 VBA 即时窗口:
Ctrl + G
即可查看运行日志。
📅 版本说明
| 版本 | 核心改进 |
|---|---|
| v8.7 | 支持用户自定义基准价,按产品代码精确匹配传输数据,增强稳定性 |
| v8.6 | 优化目标表数据备份与恢复机制 |
| v8.5 | 增强 WPS / Excel 计算兼容性 |
| v8.4 | 增加 P 列公式备份与恢复 |
| v8.3 | 优化多方案循环与状态栏进度提示 |
| v8.x | 完善住宅、商业分区调价逻辑 |
当前版本:v8.7 优化稳定版
🔧 调试与维护建议
1. 提示“未找到工作表”
请检查是否存在以下工作表:
11.4售价敏感性分析
02基本指标录入
如果工作表名称发生变化,建议保持名称中包含上述关键字,模块可进行模糊匹配。
2. 某些产品价格没有传输成功
请检查:
- 源数据
N4:N7或N19:N20是否有产品代码 - 目标表
C188:C201或C203:C212是否存在相同产品代码 - 产品代码是否存在多余空格
- 装修类型是否为
毛坯或精装 - 是否开启了对应产品的“参与调价”
3. 输出结果没有变化
可能原因:
- B5:B19 中售价变动为 0 或为空
- 控制单元格未填写
参与调价 - 产品代码未匹配到目标表
- 模型计算未正确触发
- 输出指标公式本身未联动到售价
建议开启:
Private Const DEBUG_MODE As Boolean = True
查看即时窗口日志。
4. 分析后基础指标表价格被改变了吗?
正常情况下不会。
模块在执行前会备份目标表售价,执行结束或报错后会恢复原始数据。
备份区域包括:
O188:O201
P188:P201
O203:O212
P203:P212
5. 为什么 P 列公式会恢复?
因为模块运行过程中需要临时修改 P4、P5、P6、P7、P19、P20 的价格值。为避免破坏分析表原有公式,模块会在执行前备份 P4:P24 的公式,并在结束后统一恢复。
💡 常见问题
Q:售价变动值是绝对售价还是增减额?
A:是增减额。模块采用:
调整后售价 = 基准售价 + B列变动值
例如基准售价为 12000,B5 为 -500,则该方案售价为 11500。
Q:可以只分析住宅,不分析商业吗?
A:可以。只需将住宅对应控制单元格设为 参与调价,商业控制单元格 D22 不设为 参与调价 即可。
Q:可以只调整某一种住宅产品吗?
A:可以。模块分别支持 D20、G20、K20、M20 四类住宅产品控制,用户可按需选择参与调价对象。
Q:商业为什么同时调整 P19 和 P20?
A:当前模块将商业区设置为一组联动调价对象,当 D22 为 参与调价 时,会同时对 P19 和 P20 叠加同一个售价变动值。
Q:导入目标表时为什么要按产品代码匹配?
A:按产品代码匹配比按固定行号更安全。即使目标表产品排序发生变化,只要产品代码一致,价格仍能写入正确行。
Q:如果目标区域有重复产品代码怎么办?
A:模块会保留首次匹配的行,并在调试模式下输出重复提示。建议目标表中产品代码保持唯一。
Q:如果装修类型不是“毛坯”或“精装”怎么办?
A:模块不会写入价格,并会在调试模式下输出未知装修类型提示。建议统一使用 毛坯 或 精装。
Q:运行出错后数据会恢复吗?
A:会。模块采用统一的 CleanExit 恢复机制,即使中途报错,也会尽量恢复目标表数据、P列公式和应用状态。
Q:支持 WPS 吗?
A:支持。模块通过 Application.Calculate、Application.CalculateFull 和 DoEvents 提升在 WPS 环境下的计算稳定性。
⚠️ 注意事项
- 使用前请确保已启用宏。
- 请确认存在
11.4售价敏感性分析和02基本指标录入工作表。 - B5:B19 应填写数字型售价变动值。
- 参与调价控制单元格必须填写完整文本:
参与调价。 - 产品代码必须在源表和目标表中保持一致。
- 装修类型建议仅使用
毛坯或精装。 - 目标表产品代码建议保持唯一。
- 输出区域
C5:L19会在运行前被清空。 - 模块运行期间不要手动修改工作簿数据。
- 建议运行前保存当前工作簿。
📞 技术支持
官网:
求助建议: http://xlcs.de/
邮件联系: admin@fdc.sd
📷 模块展示

✅ 总结
XLCS 售价敏感性分析模块通过“基准价 + 变动值”的方式,自动批量测算 15 组售价情景,并将结果汇总到分析表中。
该模块具备精确产品匹配、住宅商业分区处理、装修类型识别、数据自动备份恢复和 WPS 兼容计算等能力,能够显著提升房产项目测算中的价格情景分析效率。
对于投资决策、销售定价、风险测试和汇报分析而言,售价敏感性分析模块是 XLCS 全成本测算模板中非常重要的决策支持工具。
````








