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 组

🚀 适用场景

售价敏感性分析模块适合以下典型应用场景:

  1. 项目投资测算

    • 测算售价上涨或下降后,项目利润、收益率等指标的变化。
  2. 拿地阶段方案比选

    • 快速判断不同销售单价假设下的地价承受能力和利润空间。
  3. 销售定价策略分析

    • 分析住宅、商业不同价格调整幅度对项目整体收益的影响。
  4. 风险压力测试

    • 测算售价下跌 100 元/㎡、300 元/㎡、500 元/㎡等场景下项目是否仍可达标。
  5. 汇报材料数据支撑

    • 自动生成多档价格变动下的指标矩阵,便于形成图表和决策建议。

🧩 功能入口说明

宏名称 功能 说明
售价敏感性分析 执行售价敏感性分析 主入口,一键完成 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 售价敏感性分析

系统会自动完成以下动作:

  1. 初始化运行环境
  2. 清空旧结果区域 C5:L19
  3. 保存 P 列基准售价
  4. 备份 P4:P24 原公式
  5. 备份 02基本指标录入 中原始售价数据
  6. 逐一读取 B5:B19 中的售价变动方案
  7. 根据“参与调价”条件调整售价
  8. 按产品代码传输价格到目标表
  9. 触发模型重新计算
  10. 将关键结果记录到当前方案行
  11. 循环完成全部 15 组方案
  12. 恢复目标表原始售价
  13. 恢复 P 列公式
  14. 恢复 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

其中商业调价会同时调整 P19P20

.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:N7N19:N20 是否有产品代码
  • 目标表 C188:C201C203: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.CalculateApplication.CalculateFullDoEvents 提升在 WPS 环境下的计算稳定性。


⚠️ 注意事项

  1. 使用前请确保已启用宏。
  2. 请确认存在 11.4售价敏感性分析02基本指标录入 工作表。
  3. B5:B19 应填写数字型售价变动值。
  4. 参与调价控制单元格必须填写完整文本:参与调价
  5. 产品代码必须在源表和目标表中保持一致。
  6. 装修类型建议仅使用 毛坯精装
  7. 目标表产品代码建议保持唯一。
  8. 输出区域 C5:L19 会在运行前被清空。
  9. 模块运行期间不要手动修改工作簿数据。
  10. 建议运行前保存当前工作簿。

📞 技术支持

官网:

求助建议: http://xlcs.de/

邮件联系: admin@fdc.sd


📷 模块展示

售价敏感性分析模块界面1


✅ 总结

XLCS 售价敏感性分析模块通过“基准价 + 变动值”的方式,自动批量测算 15 组售价情景,并将结果汇总到分析表中。

该模块具备精确产品匹配、住宅商业分区处理、装修类型识别、数据自动备份恢复和 WPS 兼容计算等能力,能够显著提升房产项目测算中的价格情景分析效率。

对于投资决策、销售定价、风险测试和汇报分析而言,售价敏感性分析模块是 XLCS 全成本测算模板中非常重要的决策支持工具。
````