excel - 如何将计算分配给函数
问题描述
我正在尝试创建一个 UDF 以最小化计算中的数据行。而不是包括特定单元格引用的规定计算,我想创建一个名为 Rent_Rate 的变量并将其设置为等于 Base_year_rent * ((1 + Rent_escalator)^Compound_period) 以便电子表格中的公式显示为“= Rent_Rate * Units (静态单元格引用)”
我尝试定义变量并将每个变量设置为我想要(在单独的工作表上)引用的参考单元格。
Public Function Rent_Rate(Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long) As Long
Base_year_rent = SH_Assumptions.Cells("C11")
Rent_escalator = SH_Assumptions.Cells("C12")
Compound_period = Year(Range(ActiveCell, ActiveCell.End(xlUp)).Select) - Year(SH_Assumptions.Cells("C4"))
Rent_Rate = Base_year_rent * ((1 + Rent_escalator) ^ Compound_period)
End Function
我希望输出是一个特定值,等于输入到被引用单元格中的值。
解决方案
首先 - Excel 中的函数需要有括号,例如=Rent_Rate()
您可以通过使用您想要的名称设置一个命名范围来绕过它,这会调用您的 UDF(例如,一个名为RentRate
which is的命名范围=Rent_Rate()
)
下一个问题是您提供了 UDF 3 参数,但没有向它们传递任何内容。事实上,您会立即覆盖它们 - 只是Dim
变量!
Public Function Rent_Rate() AS Long
Dim Base_year_rent As Long, Rent_escalator As Long, Compound_period As Long, Rent_Rate As Long
Base_year_rent = SH_Assumptions.Cells("C11").Value
Rent_escalator = SH_Assumptions.Cells("C12").Value
'What is this abomination supposed to do???
Compound_period = Year(Range(ActiveCell, ActiveCell.End(xlUp)).Select) - Year(SH_Assumptions.Cells("C4"))
Rent_Rate = Base_year_rent * ((1 + Rent_escalator) ^ Compound_period)
End Function
但是,您在这里仍然有一个大问题-您为什么要使用ActiveCell
and Select
? 特别是在 UDF 中,您应该避免使用Select
. 如果您尝试使用调用该函数的单元格,请查找Application.Caller
推荐阅读
- python - 如何根据必须包含特定值的两列选择行?
- ruby-on-rails - 未定义的方法“空?” 尝试添加错误验证消息时为 nil:NilClass
- javascript - 多个自动完成材质 UI filterSelectedOptions 在第一次搜索时不起作用
- sql - 如何从不相关的表中合并到只有 1 行的 2 个查询结果
- ios - Swift:非泛型结构中的泛型初始化
- php - html_entity_decode 不适用于某些 html 实体,例如“
- java - 在可为空的 Optional 中检索值的最佳方法是什么?
- azure - 是否可以更改 Azure DevOps API 中的项目名称?
- c# - 尝试登录到 SQL Server 数据库,但似乎无法正常工作
- delphi - Delphi:System.Net.HttpClient 忽略 SSL 证书验证(获取服务器证书时出错)