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