自动填充行中的最后一个单元(水平自动填充而不是垂直)
希望这将是一个快速解决。
我已经search了所有的VBA代码是自动填充列到最后一个单元格。 不过,我试图自动填充整行。
我目前的代码片段如下。 我想要做的是在顶部有标有date的标题,并创build一个只有月份和年份的新标题。 这是macros的其余部分运行。 但是,现在用户不得不手动在顶部自动填充公式。
我的代码是:
Rows("1:1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("D1").Select ActiveCell.FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" LastCol = Range("D1").End(xlToRight).Column Range("D1").Select Selection.AutoFill Destination:=Range("D1:AD1"), Type:=xlFillDefault Range("D1:AD1").Select
在这一行是:
Selection.AutoFill Destination:=Range("D1:AD1"), Type:=xlFillDefault
无论如何,要让“AD1”成为新行2中的最后一个单元格吗?
可能的解决scheme。
Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("D1").FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" lastcol = Cells(2, Columns.Count).End(xlToLeft).Column Range("D1").AutoFill Destination:=Range("D1", Cells(1, lastcol)), Type:=xlFillDefault
首先避免。select减慢代码,然后可以填写公式,而不需要自动填充。
也习惯于声明所有范围的父级工作表。
我们用.Cells(2,.Columns.Count).End(xltoLeft).Column)
find最后一个使用的列。
在另一个Cells()中使用它,我们得到第1行中的最后一个单元格.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column)
。
因此, .Range("D1",.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column))
创build从D1到第2行中最后一个使用列的范围:
With ActiveSheet 'Should be replaced with your sheet name: Worksheets("Sheet1") .Rows("1:1").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove .Range("D1",.Cells(1,.Cells(2,.Columns.Count).End(xltoLeft).Column)).FormulaR1C1 = "=TEXT(R[1]C,""mmm-yyyy"")" End With