XLCS房产项目全成本测算模版 — 地价敏感性分析模块介绍

地价敏感性分析模块是 XLCS 房产项目全成本测算模板中的投资测算分析工具,主要用于围绕项目楼板价 / 地价水平进行多组情景测算,快速观察不同土地价格下项目利润、收益率、现金流等关键指标的变化情况。

模块通过动态修改名称管理器中的 楼板价 对应单元格,触发模型重新计算,并读取分析表中的核心指标结果,最终批量输出为一张地价敏感性分析表。该模块适用于拿地测算、地价承受能力分析、竞拍报价测算、投资决策汇报等场景。

当前版本为 v2.1,重点优化了运行速度,修复了数据重复和计数问题,并增强了 Excel / WPS 环境下的运行稳定性。


📌 核心功能一览

功能 说明
楼板价多情景测算 按基准值和递增值自动生成多组楼板价方案
支持最多 50 组方案 运行次数上限自动限制为 50 组
动态修改模型输入 自动写入名称管理器 楼板价 对应单元格
触发模型重算 每次写入楼板价后执行全局计算
自动读取关键指标 D4:S4 读取模型计算结果
批量输出结果 一次性写入 C6:S55,提升运行速度
自动恢复原公式 分析完成或报错后恢复 楼板价 原始公式
清空旧结果 运行前自动清空历史输出数据
格式自动复制 D4:S4 的格式复制到输出区域
Excel / WPS 兼容 针对 Excel 启用更完整计算链重建,WPS 使用普通计算
错误保护 出错时记录调试信息并恢复现场
运行完成提示 弹窗提示成功生成的数据组数

⚙️ 模块基本信息

项目 内容
模块名称 地价敏感性分析模块
作者 XLCS-Jgwy
日期 2026-04-09
当前版本 v2.1
主过程 地价敏感性分析
分析工作表 11.3地价敏感性分析
模型输入名称 楼板价
参数输入区 D5F5I5
指标读取区 D4:S4
结果输出区 C6:S55
最大方案数 50 组

🚀 适用场景

该模块适用于以下典型业务场景:

  1. 拿地测算

    • 快速测算不同楼板价下的项目利润、IRR、净利润率等指标。
  2. 地价承受能力分析

    • 判断项目在不同土地成本下可承受的最高报价区间。
  3. 土地竞拍报价决策

    • 对多个报价档位进行快速模拟,为竞拍报价提供数据支撑。
  4. 投资方案比选

    • 对不同土地获取成本下的项目投资价值进行横向比较。
  5. 投委会汇报

    • 自动生成地价敏感性表,用于图表展示和决策说明。
  6. 风险压力测试

    • 分析土地价格上升对项目收益空间和资金指标的影响。

🧩 功能入口说明

宏名称 功能 说明
地价敏感性分析 执行地价敏感性分析 主入口,一键生成地价方案结果表

调用方式:

Call 地价敏感性分析

🧭 操作流程

第一步:确认分析工作表

模块固定使用工作表:

11.3地价敏感性分析

代码中通过工作表名称获取:

Set analysisSheet = ThisWorkbook.Worksheets("11.3地价敏感性分析")

运行前请确保该工作表存在。


第二步:确认名称管理器

模块需要名称管理器中存在名称:

楼板价

该名称应引用模型中实际控制楼板价 / 地价输入的单元格。

模块通过以下代码获取:

Set targetCell1 = ThisWorkbook.Names("楼板价").RefersToRange

如果找不到该名称,会提示:

未找到名称“楼板价”,请检查名称管理器

第三步:设置分析参数

11.3地价敏感性分析 工作表中设置以下参数:

单元格 参数 说明
D5 起始楼板价 / 基准值 第一组方案的楼板价
F5 运行次数 需要生成的方案数量,最多 50
I5 递增值 每组方案楼板价递增金额

例如:

参数 示例
起始楼板价 D5 3000
运行次数 F5 20
递增值 I5 100

则生成方案为:

3000、3100、3200、3300 ... 共20组

第四步:运行分析

运行:

Call 地价敏感性分析

系统会自动完成:

  1. 初始化运行环境
  2. 获取 楼板价 对应单元格
  3. 保存该单元格原始公式
  4. 校验 D5、F5、I5 参数
  5. 清空旧输出结果 C6:S55
  6. 初始化计算链
  7. 循环生成楼板价方案
  8. 每次写入楼板价并重新计算模型
  9. 读取 D4:S4 指标结果
  10. 暂存到数组
  11. 一次性写回 C6:S55
  12. 复制结果格式
  13. 恢复 楼板价 原始公式
  14. 恢复应用状态
  15. 弹窗提示生成结果数量

📊 输入与输出区域

输入区域

单元格 / 区域 内容 说明
D5 起始楼板价 第一组方案楼板价
F5 运行次数 生成方案数量,最大 50
I5 递增值 每组楼板价递增金额
D4:S4 指标结果区 每次模型计算后读取
名称 楼板价 模型输入 动态写入当前楼板价

输出区域

模块输出到:

C6:S55
内容
C列 当前楼板价
D:S列 对应 D4:S4 的 16 项模型指标

最多输出 50 行,即:

C6:S55

🔍 功能详解

1. 通过名称管理器定位楼板价

模块不是写死某个单元格,而是通过名称管理器获取楼板价输入位置:

Set targetCell1 = ThisWorkbook.Names("楼板价").RefersToRange

优势:

  • 模型结构调整后,只需维护名称管理器
  • 不依赖固定单元格地址
  • 更适合模板版本迭代
  • 减少代码修改成本

2. 自动保存并恢复原公式

在运行前,模块保存 楼板价 单元格的公式:

originalFormula = targetCell1.Formula

运行过程中会临时写入不同楼板价:

targetCell1.Value2 = currentValue

分析结束或报错后恢复:

targetCell1.Formula = originalFormula

这样可以保证敏感性分析不会破坏原模型逻辑。


3. 参数校验

模块会检查:

参数 校验规则
D5 必须为数字
F5 必须为数字,且大于 0
I5 必须为数字

若参数不合法,会中止运行并提示错误。

运行次数还会自动限制最大值:

loopTimes = CLng(Application.Min(CDbl(.Range("F5").Value2), 50))

即最多运行 50 组。


4. 地价方案生成逻辑

每一组方案楼板价计算公式为:

当前楼板价 = 起始楼板价 + 递增值 × (序号 - 1)

对应代码:

currentValue = baseValue + increment * (i - 1)

示例:

起始楼板价 递增值 第几组 当前楼板价
3000 100 1 3000
3000 100 2 3100
3000 100 3 3200
3000 100 4 3300

5. 强制刷新模型计算

每次写入当前楼板价后,模块执行:

Application.Calculate

对于 Excel 环境,运行前还会执行:

Application.CalculateFullRebuild

用于初始化计算链,降低复杂模型中出现旧值、重复值或部分指标未刷新的风险。


6. 自动读取 D4:S4 指标

每次模型重新计算后,模块读取:

resultRow = analysisSheet.Range("D4:S4").Value2

该区域通常放置项目关键指标,例如:

  • 地价总额
  • 货值
  • 成本
  • 净利润
  • 净利润率
  • IRR
  • NPV
  • 资金峰值
  • 回正期
  • 投资回报率

具体指标以模板中 D4:S4 的公式设置为准。


7. 使用数组批量输出

模块不是每轮直接写入工作表,而是先写入数组:

ReDim outputData(1 To loopTimes, 1 To 17)

循环完成后一次性输出:

analysisSheet.Range("C6").Resize(loopTimes, 17).Value2 = outputData

这样可以显著提升运行速度,并减少屏幕刷新和单元格写入造成的性能损耗。


8. 自动复制格式

结果写入后,模块将 D4:S4 的格式复制到输出区域:

analysisSheet.Range("D4:S4").Copy
analysisSheet.Range("D6:S" & 5 + loopTimes).PasteSpecial Paste:=xlPasteFormats

这样输出结果的百分比、金额、日期等格式可以保持与指标区一致。


9. Excel / WPS 兼容处理

模块通过:

isExcel = (InStr(1, Application.Name, "Excel", vbTextCompare) > 0)

判断当前运行环境。

在 Excel 中:

  • 关闭事件
  • 切换手动计算
  • 使用 CalculateFullRebuild

在非 Excel 环境中:

  • 尽量避免调用不兼容功能
  • 使用普通 Application.Calculate

提升 WPS 环境下的兼容性。


10. 调试信息输出

模块会在即时窗口输出运行信息:

===== 开始执行:地价敏感性分析 =====
目标单元格地址:[工作簿]工作表!$X$Y
原始公式:=...
总耗时:3.25 秒
===== 执行完成 =====

如果出错,会输出:

错误时间
错误代码
错误描述
错误位置

方便开发者排查问题。


🧱 模块结构说明

主入口

过程名 说明
地价敏感性分析 执行完整地价敏感性分析流程

主要流程

阶段 内容
一、变量定义 定义工作表、目标单元格、数组和计数变量
二、初始化环境 保存并关闭刷新、事件、自动计算
三、获取名称 通过名称管理器获取 楼板价 单元格
四、参数校验 校验 D5、F5、I5
五、预分配数组 创建 C:S 输出数组
六、初始化计算链 执行全量计算或普通计算
七、主循环 逐组写入楼板价并读取指标
八、写回结果 一次性输出结果并复制格式
九、恢复环境 恢复公式和应用状态

⚙️ 关键参数说明

参数 / 区域 说明
11.3地价敏感性分析 分析结果工作表
楼板价 名称管理器中的模型输入名称
D5 起始楼板价
F5 运行次数
I5 楼板价递增值
D4:S4 指标读取区域
C6:S55 输出结果区域
loopTimes 实际循环次数,最大 50
outputData 结果缓存数组

🧪 使用示例

执行地价敏感性分析

Sub RunLandPriceSensitivity()
    Call 地价敏感性分析
End Sub

推荐按钮名称

可在 11.3地价敏感性分析 工作表中添加按钮,并绑定:

运行地价敏感性分析

或:

生成楼板价敏感性表

📅 版本说明

版本 核心改进
v2.1 优化运行速度,修复数据重复 / 计数问题,增强稳定性
v2.0 引入数组批量输出和公式恢复机制
v1.x 基础地价敏感性分析功能

当前版本:v2.1


🔧 调试与维护建议

1. 提示未找到名称“楼板价”

请检查 Excel 名称管理器中是否存在:

楼板价

并确认该名称引用的是一个有效单元格。


2. 提示 F5 / D5 / I5 必须为数字

请检查:

单元格 要求
D5 数字
F5 大于 0 的整数
I5 数字

3. 生成结果重复或不变化

请检查:

  • 楼板价 是否真正影响模型计算
  • D4:S4 指标公式是否引用了模型结果
  • 是否存在外部链接未刷新
  • 是否存在手动计算未完成
  • 是否在 WPS 中存在计算链延迟

可尝试先手动全表计算,再运行模块。


4. 输出格式不正确

模块会复制 D4:S4 的格式到 D6:S输出行。请先确认 D4:S4 的格式设置正确。


5. 输出超过 50 组可以吗?

当前代码限制最多 50 组。

如果需要更多组,需要同步调整:

loopTimes = CLng(Application.Min(CDbl(.Range("F5").Value2), 50))
.Range("C6:S55").ClearContents

以及输出区域容量。


💡 常见问题

Q:地价变化是按百分比还是按固定金额?

A:当前模块按固定金额递增:

当前楼板价 = 起始楼板价 + 递增值 × (序号 - 1)

Q:最多可以生成多少组?

A:最多 50 组,对应输出区域 C6:S55


Q:模块会永久修改楼板价吗?

A:不会。模块会在结束或出错时恢复 楼板价 原始公式。


Q:为什么使用名称管理器“楼板价”?

A:这样不依赖固定单元格位置,模板结构调整后只需维护名称管理器即可。


Q:结果指标从哪里来?

A:从 11.3地价敏感性分析 工作表的 D4:S4 读取。


Q:支持 WPS 吗?

A:模块做了兼容处理,在非 Excel 环境下避免使用部分 Excel 专用计算链操作,通常可在 WPS 中运行。


⚠️ 注意事项

  1. 使用前请确保已启用宏。
  2. 请确认存在 11.3地价敏感性分析 工作表。
  3. 请确认名称管理器中存在 楼板价
  4. D5、F5、I5 必须为有效数字。
  5. F5 最大按 50 组执行。
  6. 输出区域 C6:S55 会被清空并覆盖。
  7. D4:S4 应配置好需要读取的指标公式。
  8. 模块运行期间不要手动修改模型输入。
  9. 建议运行前保存并备份文件。
  10. 如模型较大,请等待完成提示后再操作。

📞 技术支持

官网:

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

邮件联系: admin@fdc.sd


📷 模块展示

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


✅ 总结

XLCS 地价敏感性分析模块能够围绕楼板价快速生成最多 50 组地价情景,并自动读取项目关键财务指标,形成完整的地价敏感性分析结果表。

模块通过名称管理器定位模型输入,通过数组批量输出提升速度,并在运行结束后恢复原始公式,既保证了分析效率,也保障了模型安全。

对于拿地测算、竞拍报价、地价承受能力分析和投资决策汇报而言,该模块是 XLCS 全成本测算模板中非常实用的投资分析工具。
````