在VBA中应用公式?

时间:2017-08-02 14:01:15

标签: excel vba excel-vba

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

在Excel中手动编写它正在运行。

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

但是当我尝试在宏

中自动执行此操作时
Range("R2").Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"
  

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

另外,我想为整个专栏做这样的事情,比如这个

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

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

我做错了什么?

5 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

一般情况下,请尝试以下方法:

  • 在Excel中制作可行的公式

  • 然后选择具有可行公式的单元格

  • 运行代码

  • 在即时窗口中,应打印一些有用的内容。

代码

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

来源:Error with IF/OR in VBA

答案 3 :(得分:1)

Range.Formula期待EN-US语法。

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

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

答案 4 :(得分:0)

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

例如:而不是"" Q""尝试\" Q \"