如何自动填充活动单元格的列直到最后一行
Posted
技术标签:
【中文标题】如何自动填充活动单元格的列直到最后一行【英文标题】:How to auto fill the column of the active cell till the last row 【发布时间】:2020-04-29 09:29:12 【问题描述】:尝试执行以下代码:
ActiveCell.Offset(1, 0).Select 'Noting but F2
ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],4)"
' find last row with data in column "A"
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
' copying the formula from "F2" all the way to the last cell
ActiveCell.AutoFill Destination:=Range(ActiveCell.EntireColumn & lastRow), Type:=xlFillDefault
它给出了一个错误,说类型不匹配。
但是当我尝试时:
ActiveCell.AutoFill Destination:=Range("F2:F" & lastRow), Type:=xlFillDefault
它工作正常,但我不希望 F2:F 在那里,因为我不知道将来会出现哪一列。
【问题讨论】:
你应该阅读这个***.com/questions/10714251/…Range(ActiveCell.EntireColumn & lastRow)
没有意义。
嗯,我们可以使用什么来代替它或“F2:F”,因为列号在实际执行时将是未知的。只有事情会相同,即标题(第 1 行中的值)。 @SJR
使用cells(2,activecell.column)
和cells(lastrow,activecell.column)
。活动单元格必须在目标范围内。
也就是说,您可以一次性应用公式,无需自动填充。
【参考方案1】:
要回答您的问题,您没有指定正确的范围。如您所说,可以指定一个简单的范围
使用字符串格式Range("A1:B4")
,其中A1
和B4
是范围的两个对角。
使用两个角作为单元格,例如Range( Cells(1,1), Cells(4,2) )
其中Cells(1,1)
是A1
和Cells(4,2)
是B4
所以你可以写
ActiveCell.AutoFill Destination:=Range(Cells(2, ActiveCell.Column), Cells(lastRow, ActiveCell.Column)), Type:=xlFillDefault
为了达到您的目标,您也可以避免使用自动填充。 FormulaR1C1 格式允许您使用“相对”单元格偏移/地址编写公式。因此,在自动填充之后,desired 列中的所有单元格都将具有相同的 FormulaR1C1。 然后您可以避免使用自动填充并为整个列手动设置相同的 FormulaR1C1。
所以你可以写一个更简单的代码:
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range(Cells(1, ActiveCell.Column), Cells(lastRow, ActiveCell.Column)).FormulaR1C1 = "=LEFT(RC[-1],4)"
【讨论】:
以上是关于如何自动填充活动单元格的列直到最后一行的主要内容,如果未能解决你的问题,请参考以下文章
VBA - 如何自动填充到底部,直到最后一个 B 单元格包含数据