将一些公式复制到工作表中的特定单元格

时间:2015-03-23 19:17:26

标签: excel vba excel-vba

我正在尝试创建一个宏,将一些公式复制到工作表中的特定单元格。

当我创建宏时,标准公式正常工作,但是,当我尝试添加一个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中复制文本时,文本出现问题。如果我只是将它们键入单元格然后突出显示并自动填充,我可以轻松使用公式。

我觉得我只是缺少一些基本的东西。

1 个答案:

答案 0 :(得分:2)

你需要逃避你的报价。

变化:

strFormulas(4) = "=IF(I2>1,"FAILED","Pass")"

为:

strFormulas(4) = "=IF(I2>1,""FAILED"",""Pass"")"

加倍的引号""会在粘贴到公式中时转换为单引号"

您可以在IDE(或StackOverflow编辑器)中使用自动颜色编码作为提醒您忘记这样做。