VBA将单元格内容分配为公式而不是其结果

Posted

技术标签:

【中文标题】VBA将单元格内容分配为公式而不是其结果【英文标题】:VBA to assign a cell content as a formula not its results 【发布时间】:2015-09-08 09:11:49 【问题描述】:

我正在尝试使用 VBA 为单元格分配公式,但每次运行代码时它分配给单元格的结果不是公式本身,就像我使用 excel 电子表格输入公式时一样。

有谁知道如何在单元格中使用宏而不是公式结果来显示公式。

我问这个是因为我需要在现有工作表中插入这一行以及其他数据,然后运行另一个宏来保持更新,而宏取决于这个公式。

我正在使用的代码

Cells(C, 9).Formula = Application.Index(Plan2.Range("B2:D10000"), _
Application.Match(Plan1.Range("B" & C) & Range("F" & C), Plan2.Range("A2:A10000"), 0), 3)

如您所见,此公式取决于其插入的行。

【问题讨论】:

公式是一个字符串,看起来像这样:"=Index(B2:D10000)..."。您正在做的是对 Excel 函数进行 VBA 调用并将结果分配给单元格的公式,这类似于 "=3" 【参考方案1】:

您的Formula 最终将被缩减为Application.Index 返回的任何内容。除非返回的值是一个实际的公式字符串,否则您只会得到一个数字作为结果,并将其设置为 .Formula

如果要实际设置公式,则需要在 VBA 中创建一个字符串来表示要使用的公式。在这种情况下,该字符串看起来像:

Cells(C, 9).Formula = "=INDEX(Plan2!B2:D10000, MATCH(Plan1!B" & C & "..."

您在动态部分中连接的位置。最终结果需要看起来像一个正常的公式。 Application.XXXApplication.WorksheetFunction.XXX 函数返回实际结果,而不是可以组合成公式的部分。

【讨论】:

以上是关于VBA将单元格内容分配为公式而不是其结果的主要内容,如果未能解决你的问题,请参考以下文章

vba中怎么用代码将单元格内容转换为文本类型?

在excel中,修改单元格数据的方法有几种?

怎么把两个单元格合并成一个

VBA,如何判断单元格中公式的结果是不是是星期天或星期六呢?

excel用函数合并多个单元格内容,且用分隔符隔开

excel 用VBA将所有单元格内容全部转换为文本