用于系列自动填充的Excelmacros

我想问如何创buildmacros来自动填充从A2行到串行/系列(1,2,3等),直到有数据从列B数据的末尾?

我使用这个代码:

Sub FillHandle() If IsEmpty(ActiveCell.Value) Then Exit Sub If ActiveCell.Row = Rows.Count Then Exit Sub If ActiveCell.Column > 1 Then If Not IsEmpty(ActiveCell.Offset(, -1)) And Not IsEmpty(ActiveCell.Offset(1, -1)) Then Range(ActiveCell, ActiveCell.Offset(, -1).End(xlDown).Offset(, 1)).FillDown Exit Sub End If End If If ActiveCell.Column < Columns.Count Then If Not IsEmpty(ActiveCell.Offset(, 1)) And Not IsEmpty(ActiveCell.Offset(1, 1)) Then Range(ActiveCell, ActiveCell.Offset(, 1).End(xlDown).Offset(, -1)).FillDown Exit Sub End If End If End Sub 

但是,它只是自动填充“1”。

以下是我的Excel表单的格式。

在这里输入图像说明

先谢谢你!

没关系,我find了解决scheme,我会分享给需要它的其他人:

 Sub FillSerialNumbers() With Range("A2:A" & Range("B" & Rows.Count).End(xlUp).Row) .Cells(1, 1).Value = 1 .DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Trend:=False End With End Sub 

Range.AutoFill方法与Range.DataSeries不同 。

 Sub FillHandle() Dim lr As Long 'do not know what this is for If IsEmpty(ActiveCell.Value) Then Exit Sub 'do not know what this is for either If ActiveCell.Row = Rows.Count Then Exit Sub With Worksheets("Sheet2") '<~~ you should always know what worksheet you are on lr = .Cells(Rows.Count, "B").End(xlUp).Row .Cells(2, "A") = 1 .Range(.Cells(2, "A"), .Cells(lr, "A")).DataSeries _ Rowcol:=xlColumns, Type:=xlLinear, Step:=1 End With 'if the series is to be linear but not 1, 2, 3, etc then supply both ' the first and last value and let .Series fill in the difference With Worksheets("Sheet2") '<~~ you should always know what worksheet you are on lr = .Cells(Rows.Count, "B").End(xlUp).Row .Cells(2, "A") = 1 .Cells(lr, "A") = 99 .Range(.Cells(2, "A"), .Cells(lr, "A")).DataSeries _ Rowcol:=xlColumns, Type:=xlLinear, _ Step:=(.Cells(lr, "A").Value2 - .Cells(2, "A").Value2) / (lr - 2) End With End Sub 

第一个例子是一个严格的1,2,3的序数。 后者是一个相对的系列填充,其中第一个和最后一个值已知,但不一定是行之间的行数。