2017-08-02 60 views
1

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

手动在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"")" 

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

我在做什么错?

+2

LEFT(A2,2) - 使用逗号,而不是一个分号 – braX

+1

那些分号(;)应该是逗号(,) –

回答

2

VBA使用逗号分隔符,无论本地设置

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

这解决了这个问题,我会尽快接受。谢谢。 –

0

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

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

+0

这不是vb.Net,这是'VBA'。逃逸符号不同。 – Vityata

1

你总是可以尝试录制宏选项: 1.启动记录 2.式粘贴到细胞 3.停止记录 4.看录制的宏以及它如何格式化式

+0

我试过,但它使用R1C1格式,我不熟悉它。 –

1

一般而言,尝试FO llowing:

  • 使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

1

Range.Formula期待一个EN-US语法。

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

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