だから私はExcelシートを持っています、列Aはデータでいっぱいです(範囲は毎回異なります)
空の列Hに数式を入力したい(H2から列Aの最後に入力されたセルまで)
これは私が複数のサイトから参照したコードです。
しかし、H1とH2のみを埋めました。この場合、H2:H6が必要です。
xlUpを使用した現在の出力。
colC、D、E、Fは、現時点では無視できるものです。
XlUpをxlDownに変更しようとしました。
動作しましたが、colAのデータの一部がrow60で停止すると、H2からH(無限大)までのすべてのセルがいっぱいになりました。
Sub Try()
Dim lRow As Long
lRow = Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet4").Select
Range("H2:H" & lRow).Select
Worksheets("Sheet4").Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"
Range("H2").AutoFill Destination:=Range("H2:H" & lRow)
End Sub
誰かが私の間違いを指摘できますか?
アクティブセルを使用する方法のいくつかは知っていますが、アクティブセルがどこにあるのかわからないことがあるので、使用したくありません。現在どのセルが選択されているかわからないように。 (アクティブセルについて間違った考えを持った場合はお知らせください)
ありがとうございました。
これはあなたのために働くはずです。列Aのデータ範囲を選択し、それを列Hにオフセットします。この範囲は自動入力に与えられます。
Option Explicit
Dim rng As Range
Dim wsh As Worksheet
Sub Second_Try()
Set wsh = Worksheets("Sheet4")
wsh.Activate
wsh.Cells(1, "H") = "ans."
Set rng = Range(wsh.Cells(2, 1), wsh.Cells(2, 1).End(xlDown))
Set rng = rng.Offset(0, 7)
wsh.Range("H2").FormulaR1C1 = "=(RC[-6])/(RC[-1])"
Range("H2").AutoFill Destination:=rng
'instead of these last two rows you can simply use this:
'rng.FormularR1C1 = "=(RC[-6])/(RC[-1])"
End Sub
私は個人的にこのソリューションを好みます。範囲を選択せず、空のセルができるまでセルを処理するだけだからです。
Option Explicit
Dim i As Integer
Dim wsh As Worksheet
Sub Third_Try()
Set wsh = Worksheets("Sheet4")
i = 2
While wsh.Cells(i, 1) <> ""
wsh.Cells(i, 8).FormulaR1C1 = "=(RC[-6])/(RC[-1])"
i = i + 1
Wend
End Sub