Vba 将sumif插入列的所有单元格

Vba 将sumif插入列的所有单元格,vba,Vba,我想使用vba在单元格J2中插入IF(A2“子任务”、SUMIF(D:D,D2,I:I),“”)。然后我想把这个公式复制到J列的每一行,直到D列的最后一行数据,我使用的是Excel 2007,它给了我一个错误 Range("J2").Value = "=" & "IF(A2<>""Sub-task"",SUMIF(D:D,D2,I:I),"""")" Range(“J2”).Value=“=”和“如果(A2”子任务)、SUMIF(D:D、D2、I:I),” 我的解决办法是

我想使用vba在单元格J2中插入IF(A2“子任务”、SUMIF(D:D,D2,I:I),“”)。然后我想把这个公式复制到J列的每一行,直到D列的最后一行数据,我使用的是Excel 2007,它给了我一个错误

Range("J2").Value = "=" & "IF(A2<>""Sub-task"",SUMIF(D:D,D2,I:I),"""")"
Range(“J2”).Value=“=”和“如果(A2”子任务)、SUMIF(D:D、D2、I:I),”
我的解决办法是在等号的末尾打上公式,这是出于某种原因。为了计算D中的行数,我只是用“I”做了一个while循环来跟踪行数。但是,这将在它命中D中的空单元格后立即停止复制,因此如果有空行,则必须以不同的方式循环它

Sub SumIfSub()
    Dim i As Integer

    Range("J2").Value = "="
    Range("J2").Value = Range("J2").Value & "IF(A2<>""Sub-task"",SUMIF(D:D,D2,I:I),"""")"

    i = 3
    Do While (Range("D" & i).Value <> "")
        Range("J" & i).Value = Range("J2").Value
        i = i + 1
    Loop
End Sub
Sub SumIfSub()
作为整数的Dim i
范围(“J2”)。值=“=”
范围(“J2”)。值=范围(“J2”)。值和“如果(A2”“子任务”),SUMIF(D:D,D2,I:I),”
i=3
Do While(范围(“D”和“i”).Value“”)
范围(“J”和i).值=范围(“J2”).值
i=i+1
环
端接头

以下各项应能起作用。它将您请求的公式分配给J列中的所有单元格,从第2行开始,到包含D列中最后使用的单元格的行结束

Sub Test
    With ActiveSheet
        .Range("J2:J" & .Cells(.Rows.Count, "D").End(xlUp).Row).Formula = _
              "=IF(A2<>""Sub-task"",SUMIF(D:D,D2,I:I),"" "")"
    End With
End Sub
子测试
使用ActiveSheet
.Range(“J2:J”和.Cells(.Rows.Count,“D”).End(xlUp).Row)。公式=_
=IF(A2“子任务”,SUMIF(D:D,D2,I:I),“”)
以
端接头