我试图根据A列中有多少行从B1单元格中的第一个单元格自动填充。我对如何解决这个问题有任何想法。谢谢!
Set sourceRange = Worksheets("Sheet1").Range("A1:A20")
Set fillRange = Worksheets("Sheet1").Range("B1:B20")
sourceRange.AutoFill Destination:=fillRange
答案 0 :(得分:2)
将代码更改为此:
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
会成功的!
答案 1 :(得分:2)
这里有一个猜测,就是不确定您要做什么。
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
答案 2 :(得分:0)
我发现规避此问题的最佳方法如下
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
不会自动填充,但应该为您完成这项工作。