excel - 使用外部引用将字符串转换为公式
问题描述
尝试将单元格值(字符串)转换为公式。当单元格值具有以下内容时,它可以正常工作:A1+B1。但是当单元格值(字符串)引用另一个工作簿时,就会得到#Value!单元格中的错误(参见下面 C2 中的示例)。有人知道为什么吗?
Sub Test()
'Application.Volatile
Dim s As String
's = "=" & Range("C1").Value
s = Range("C1").Value
Range("D1") = Application.Evaluate(s)
'Range("D1").Formula = Application.Evaluate(s)
End Sub
解决方案
在 Excel 中计算公式
由于您
Application.Volatile
的程序中有(尽管注释掉了),我假设您正在尝试创建一个函数来评估一个单元格的公式。这是您可以构建的基本示例。
编码
Option Explicit
Function evalFormula(FormulaCell As Range) As Variant
Application.Volatile
With FormulaCell.Cells(1)
If Len(.Value) > 0 Then
evalFormula = Application.Evaluate(.Value)
Else
evalFormula = ""
End If
End With
End Function
使用您的示例数据,您可以
Excel
在例如 cell中使用此功能D1
:=evalFormula(C1) =IFERROR(evalFormula(C1),"")
并抄下来。
请注意,此评估是在
VBA
(notExcel
) 中执行的,因此您必须,
在“公式字符串”中使用逗号 (),尽管您的列表分隔符(如我的情况)可能是分号 (;
)。在一种情况下使用
Application.Volatile
也可能对您有所帮助,但在另一种情况下则无济于事,即如果您使用它,那么当您关闭外部工作簿时,检索到的值只会在重新计算工作表之前存在。如果您不使用它,如果您不更改源单元格中的值,则检索到的值可能一直存在,但值可能无法正确更新。对此进行测试以找出在您的情况下哪个更“方便”。
推荐阅读
- java - 如何运行这个java文件?
- algorithm - 如何将秘密发送到服务器并对其进行验证,而不会冒着对哈希进行暴力破解的风险?
- java - 握手失败安装 LOEclipse 插件
- python - Azure Function EventGrid 触发器不支持 Key Vault 引用?
- swift - UITableView 按钮颜色问题
- python - 了解 Python Pandas 中的数据透视表
- javascript - 进入页面后如何使元素滚动到滚动条的中心
- yocto - Yocto:在 aarch64-poky-linux 工作目录之外构建自定义引导加载程序
- java - 不知道为什么我的计数器坏了?
- java - WebFlux:JWT 令牌认证器