在Excel VBA中用动态范围自动填充表格

时间:2018-06-28 01:45:19

标签: excel excel-vba autofill vba

我正在尝试根据日期自动填充具有可变范围的表格(例如,日期范围为6/10/2018-6/13/2018,它会自动从最后一行的6/10/2018到6 / 13/2018)。

到目前为止,这是我的代码,在自动填充步骤中会出现不匹配错误:

Set Table = Adspend.Worksheets("Summary").ListObjects("Spend")
Set TableCell = Table.Range.Cells(2, Table.ListColumns(1).Index)

LastRow = Table.Range.Columns(1).Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

If IsEmpty(Table.Range.Cells(2, Table.ListColumns(1).Index)) = True Then
Table.Range.Cells(2, Table.ListColumns(1).Index) = 
Adspend.Worksheets("Summary").Range("B1").Value
End If


If TableCell.Value < Adspend.Worksheets("Summary").Range("C1").Value Then
        DatePeriod = Adspend.Worksheets("Summary").Range("C1").Value - 
TableCell.Value

        NewDate = LastRow + DatePeriod



        Table.Range.Cells(2, Table.ListColumns(1).Index).AutoFill Destination:=Table.Range(Cells(LastRow, Table.ListColumns(1)), Cells(NewDate, Table.ListColumns(1)))




End If

1 个答案:

答案 0 :(得分:0)

如果“支出”表的第一列在O列中,并且下方没有任何内容,请使用O列中的最后一个日期值和C1中的整数作为停止符,将自动填充切换为数据系列。

Option Explicit

Sub Macro1()
    Dim datePeriod As Long

    With Worksheets("Summary")
        datePeriod = .Range("C1").Value

        With .Cells(.Rows.Count, .ListObjects("Spend").Range.Column).End(xlUp)
            .DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
                        Date:=xlDay, Step:=1, Stop:=.Value + datePeriod
        End With
    End With
End Sub

如果要将其转换为ListObject语法,应该不难,但是带止动的DataSeries应该比自动填充到目标范围更容易。