在VBA中应用公式?

我试图应用一个公式,在单元格中写入YES或NO,检查另一个单元格是否以Q)文本开头。

手动在Excel中写入正在工作。

=IF(LEFT(A2;2)="Q)";"YES";"NO") 

但是当我尝试在一个macros内自动执行

 Range("R2").Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

运行时错误“1004”:应用程序定义或对象定义的错误

另外,我想要为整个专栏做这个,就像这样

 Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

但是为此我必须先解决第一个问题。

我究竟做错了什么?

无论您的本地设置如何,VBA都使用逗号分隔符

 Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2,2)=""Q)"",""YES"",""NO"")" 

您可以随时尝试录制macros选项:1.开始录制2.将公式粘贴到单元格中3.停止录制4.查看录制的macros以及如何格式化公式

一般来说,请尝试以下操作:

  • 在Excel中制作一个可行的公式

  • 然后select具有可用公式的单元格

  • 运行代码

  • 在即时窗口中应该打印一些有用的东西。


代码

 Public Sub PrintMeUsefulFormula() Dim strFormula As String Dim strParenth As String strParenth = """" strFormula = Selection.Formula strFormula = Replace(strFormula, """", """""") strFormula = strParenth & strFormula & strParenth Debug.Print strFormula End Sub 

来源: 与IF / OR在VBA中的错误

Range.Formula期待EN-US语法。

使用Range.FormulaLocal根据您的区域设置插入一个公式:

 Range("R2").FormulaLocal = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

而不是双重双引号。 尝试跳过双引号。

例如:而不是“”Q“”试试“Q”