我正试图根据A列中的行数从B1单元格中的第一个单元格自动填充。我对如何解释这一点有什么想法。谢谢
Set sourceRange = Worksheets("Sheet1").Range("A1:A20")
Set fillRange = Worksheets("Sheet1").Range("B1:B20")
sourceRange.AutoFill Destination:=fillRange
将代码更改为:
Dim lr as Long
lr = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
Set sourceRange = WorkSheets("Sheet1").Range("A1:A" & lr)
Set fillRange = sourceRange.Resize(, sourceRange.Columns.Count + 1)
sourceRange.AutoFill Destination:=fillRange
编辑:
注意,从你的问题中还不清楚,如果你也想检测最后一列,然后:
Dim lc as Long
lc = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
会为您检测到它,您可以调整您的源范围,并将您的fillRange设置为最右侧的相邻列
Set sourceRange = WorkSheets("Sheet1").Range(Cells(1,1), Cells(lr, lc))
Set fillRange = sourceRange.Resize(, sourceRange.Columns.Count + 1)
sourceRange.AutoFill Destination:=fillRange
会成功的!
以下是一个猜测,因为您不确定要做什么。
Sub x()
Dim SourceRange As Range, fillRange As Range
With Worksheets("Sheet1")
Set SourceRange = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
Set fillRange = .Range("A1").Resize(SourceRange.Rows.Count, 2)
End With
SourceRange.AutoFill Destination:=fillRange
End Sub
我发现的规避此问题的最佳方法如下
Range("B1").Select
Selection.Copy
ActiveCell.Offset(0, -1).Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Range(Selection, "B1").Select
ActiveSheet.Paste
这不是很自动填充,但应该为你做这项工作。