我正在尝试创建一个宏,将一些公式复制到工作表中的特定单元格。
当我创建宏时,标准公式正常工作,但是,当我尝试添加一个If_Then_Else语句时,当我在单元格中键入它时工作正常,我得到语法错误。如果我在FAILED和Pass之前和之后取出"
,则错误消失但公式不起作用。
编译错误:
语法错误。
以下是代码:
Sub FillDown()
Dim strFormulas(1 To 4) As Variant
With ThisWorkbook.ActiveSheet.Name
strFormulas(1) = "=DATE(YEAR(D2),MONTH(D2),DAY(D2))"
strFormulas(2) = "=DATE(YEAR(E2),MONTH(E2),DAY(E2))"
strFormulas(3) = "=NETWORKDAYS(G2,H2) - (1)"
strFormulas(4) = "=IF(I2>1,"FAILED","Pass")"
Range("G2:J2").Formula = strFormulas
Range("G2:J20").FillDown
End With
End Sub
数据:
Starts COL D COL E COL F COL G COL H COL I COL J
Trigger Date Acknowledged Date Acknowledged By
3/13/2015 17:37 3/16/2015 11:29 tech 3/13/2015 3/16/2015 2 Failed
3/10/2015 16:15 3/13/2015 16:28 tech 3/10/2015 3/13/2015 2 Failed
3/13/2015 6:32 3/13/2015 9:27 tech2 3/13/2015 3/13/2015 1 Pass
以下是我要解决的问题:
我有两个日期和时间戳。我需要删除时间戳并确定第一个日期和第二个日期之间的网络日数。
所以我的想法是创建一个列,创建我给出的日期时间的“正确日期”版本。我对两个列执行此操作然后执行networkdays计算。然后我想创建一个Pass / Failed类别,我可以使用文本条件格式化。 (我不希望这里有回应。我可以做那部分)
尝试创建文本或在VBA中复制文本时,文本出现问题。如果我只是将它们键入单元格然后突出显示并自动填充,我可以轻松使用公式。
我觉得我只是缺少一些基本的东西。
答案 0 :(得分:2)
你需要逃避你的报价。
变化:
strFormulas(4) = "=IF(I2>1,"FAILED","Pass")"
为:
strFormulas(4) = "=IF(I2>1,""FAILED"",""Pass"")"
加倍的引号""
会在粘贴到公式中时转换为单引号"
。
您可以在IDE(或StackOverflow编辑器)中使用自动颜色编码作为提醒您忘记这样做。