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.XXX
和 Application.WorksheetFunction.XXX
函数返回实际结果,而不是可以组合成公式的部分。
【讨论】:
以上是关于VBA将单元格内容分配为公式而不是其结果的主要内容,如果未能解决你的问题,请参考以下文章