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

时间:2017-06-05 19:14:11

标签: vba

我想使用vba在Cell J2中插入IF(A2<>“子任务”,SUMIF(D:D,D2,I:I),“”)。然后,我想将此公式复制到列J中的每一行,直到列D中的最后一行数据

2 个答案:

答案 0 :(得分:0)

以下内容应该有效。它将您请求的公式分配给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

答案 1 :(得分:-1)

我正在使用Excel 2007,它给了我一个错误

Range("J2").Value = "=" & "IF(A2<>""Sub-task"",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