> 定番の Range("E" & Cells.Rows.Count).End(xlUp).Row + 1
> を使用するため、何とかマクロで行いたいと思いました。
E1にデータが入っていない場合(一番最初の実行時)にはE2からデータが入りますので、その処理をIF文で分けてみました(他に方法があるかもしれませんがちょっとわからないので)
取り敢えず参考までに(極力セルにアクセスせずに変数にデータを入れてループ処理し、その後一括でセルにデータを代入しています)
Sub Example()
Dim Mydata() As Double
Dim Divisor As Double
Dim x As Long
Dim i As Long
x = Range("A1").Value / Range("B1").Value - 1
ReDim Mydata(x, 0)
Divisor = Range("B1").Value
For i = 0 To x
Mydata(i, 0) = Divisor * i
Next
If Range("E1").Value <> "" Then
Range("E" & Cells.Rows.Count).End(xlUp).Offset(1, 0).Resize(x + 1) = Mydata
Else
Range("E1").Resize(x + 1) = Mydata
End If
End Sub
マクロならこんな形でいいかと。。。
Sub Macro1
j = 0
For i = 0 To Cell(1,1) - 1 Step Cell(1,2)
j = j + 1
Cell(j,5) = i
Next i
End Sub
マクロを使わないで数式で対応ならE1に
=IF(AND($A$1<>"",$B$1<>0,$A$1/$B$1>=ROW()),$B$1*(ROW()-1),"")
と入力して下方にある程度の余裕をもってコピーしてください。
お礼
kkkkkmさん ご回答ありがとうございます。 得たい結果が得られました。 最終セル:Cells.Rows.Count).End(xlUp) にOffsetプロパティを追加:Offset(1, 0) することでさらに1行下にオフセットできる。 ご教示頂いたものを一つずつ紐解いて勉強致します。