Excel VBA 使用公式填充一列直到(另一列中最后一个填充的单元格)

Excel VBA 使用公式填充一列直到(另一列中最后一个填充的单元格)

所以我有一个 Excel 表,A 列中填充了数据(每次范围都不同)
我想用公式填充空的 H 列(从 H2 到 colA 中最后一个填充的单元格)

这是我从多个网站引用的代码。
但它只填充了 H1 和 H2,而在本例中我想要的是 H2:H6。
当前输出使用 xlUp。colC
、D、E、F 是目前可以忽略的内容。

这是使用 xlUp 的当前输出

我尝试将 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

相关内容