所以我有一个 Excel 表,A 列中填充了数据(每次范围都不同)
我想用公式填充空的 H 列(从 H2 到 colA 中最后一个填充的单元格)
这是我从多个网站引用的代码。
但它只填充了 H1 和 H2,而在本例中我想要的是 H2:H6。
当前输出使用 xlUp。colC
、D、E、F 是目前可以忽略的内容。
我尝试将 xlUp 改为 xlDown。
它起作用了,但是当 colA 中的某些数据在第 60 行停止时,它会填充从 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
谁能指出我的错误?
我知道一些使用活动单元格的方法,但我不想使用它,因为有时我不知道我的活动单元格在哪里?比如我不知道当前选择了哪个单元格。(如果我对活动单元格有误解,请告诉我)
谢谢。
答案1
这应该对你有用。它选择 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