Excel 如何自动填充活动单元格的列直到最后一行

Excel 如何自动填充活动单元格的列直到最后一行,excel,vba,range,autofill,Excel,Vba,Range,Autofill,正在尝试执行以下代码: 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

正在尝试执行以下代码:

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出现,因为我不知道将来会出现哪列。

要回答您的问题,您没有指定正确的范围。正如您所说,可以指定一个简单的范围

  • 使用字符串格式
    范围(“A1:B4”)
    其中
    A1
    B4
    是范围的两个相对角

  • 使用两个角作为单元格,例如
    范围(单元格(1,1)、单元格(4,2))
    其中
    单元格(1,1)
    A1
    单元格(4,2)
    B4

  • 这样你就可以写作了

    ActiveCell.AutoFill Destination:=Range(Cells(2, ActiveCell.Column), Cells(lastRow, ActiveCell.Column)), Type:=xlFillDefault
    
    为了达到您的目标,您还可以避免使用自动填充。FormulaR1C1格式允许您使用“相对”单元偏移量/地址编写公式。因此,自动填充后,desiderd列中的所有单元格都将具有相同的公式1C1。 然后可以避免使用自动填充,并手动为整个列设置相同的公式1C1

    因此,您可以编写这样一个更简单的代码:

    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Range(Cells(1, ActiveCell.Column), Cells(lastRow, ActiveCell.Column)).FormulaR1C1 = "=LEFT(RC[-1],4)"
    

    您应该阅读这个
    范围(ActiveCell.entireclumn&lastRow)
    没有任何意义。嗯,我们可以用什么来代替它或“F2:F”,因为在实际执行时列号是未知的。只有一样东西是相同的,即标题(第1行中的值)@SJRuse
    单元格(2,activecell.column)
    单元格(lastrow,activecell.column)
    。活动单元格必须在目标范围内。也就是说,您可以一次性应用公式,无需自动填充。