【问题标题】:Get back a formula from a cell - VBA从单元格中取回公式 - VBA
【发布时间】:2015-03-10 01:44:54
【问题描述】:

我正在编写一个 VBA 代码,其中我需要在一个工作表中引用另一个工作表中的公式 例如:在单元格 (1,3) 的工作表 A 中,有一个公式

"=R[-1]C*R[-2]C"

我想在单元格 (1, 3) 的工作表 B 中放入公式

"=A!R[-1]C*A!R[-2]C"

我只想将公式保存在字符串中 -

"=R[-1]C*R[-2]C"

并手动进行我需要的调整。

所以我的问题是:

  • 如何获取单元格中的公式?当我写 "temp=worksheets("A").cells(1,3)",
    我从单元格中取回值,而不是公式...

【问题讨论】:

标签: vba excel excel-formula


【解决方案1】:

您可以使用以下方法获取(并设置)单元格中的公式(在这种情况下为A1):

Range("A1").Formula

(详见here)。

这只是作为字符串返回,因此您可以使用常规 VBA 字符串函数(如 leftrightmidinstr 等)对其进行评估/操作。

根据链接页面,为常数单元格返回的公式只是常数本身,空白单元格返回""

您可以使用该信息来确定它是否实际上公式化。

【讨论】:

  • 如果不是所有单元格都是公式 - 我只想更改公式?是否有某种“IsFormula”功能?
  • @Bramat,更新了相关信息,你通常可以检测到一个公式,因为它以=开头,其他的都是一些描述的常量值。
  • @Bramat 您可以使用Range 对象的HasFormula 属性
【解决方案2】:

你可以使用类似的代码

Dim ws1 As Worksheet
Set ws1 = Worksheets("A")
Dim ws2 As Worksheet
Set ws2 = Worksheets("B")
Dim rng1 As Range
Set rng1 = ws1.Range("C1")
Dim rng2 As Range
Set rng2 = ws2.Range("C1")
Dim myf As String
myf = "=R[-1]C*R[-2]C"
rng1.FormulaR1C1 = myf  ' The property you were asking about

根据需要进行调整。 注意使用变量引用Ranges。

【讨论】:

    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    相关资源
    最近更新 更多