宏到自动向下填充到最后一个相邻单元格

时间:2013-08-28 12:38:49

标签: excel vba

我正在尝试在Excel中使用宏录制器来录制宏以填充一列单元格,但是因为每次填充的是不同数量的单元格,它要么填充到短或太长,这似乎是因为宏标识了单元格范围及其固定。

无论如何,我可以让它填写到最后填充的相邻单元格。例如。自动填写E列,直到它到达D列中最后一个填充的行。我在这里查看了一些示例,但代码看起来都非常不同,所以不确定是否可以使用宏录制器完成或者我必须让某人写一些代码还是必须手动完成的事情?

这是我在宏中的代码。

ActiveCell.FormulaR1C1 = _
        "=IF(MONTH(RC[-1])>3,"" ""&YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1])+1,2),"" ""&YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2))"
    Selection.AutoFill Destination:=Range("E2:E1344")
    'Selection.AutoFill Destination:=Range("E2:E1344")
    Range("E2:E1344").Select

如果有人可以提供帮助,我会非常感激

3 个答案:

答案 0 :(得分:9)

未经测试....但应该有效。

Dim lastrow as long

lastrow = range("D65000").end(xlup).Row

ActiveCell.FormulaR1C1 = _
        "=IF(MONTH(RC[-1])>3,"" ""&YEAR(RC[-1])&""-""&RIGHT(YEAR(RC[-1])+1,2),"" ""&YEAR(RC[-1])-1&""-""&RIGHT(YEAR(RC[-1]),2))"
    Selection.AutoFill Destination:=Range("E2:E" & lastrow)
    'Selection.AutoFill Destination:=Range("E2:E"& lastrow)
    Range("E2:E1344").Select

只有例外,您确定您的自动填充代码是完美的......

答案 1 :(得分:3)

此示例显示如何根据A列中的数据量填充B列。根据需要调整“A1”。它将根据B1中的公式填写B列。

Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown

答案 2 :(得分:2)

ActiveCell.Offset(0, -1).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.FillDown