2017-06-05 3 views

答えて

-1

列D内のデータの最後の行までの列Jのすべての行まで、この数式をコピーすると、それは

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 
0

次のように動作します。要求された数式を、列2のすべてのセルに割り当てます。行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 
関連する問題