使用 Excel VBA 中的动态范围自动填充 table
Autofill a table with a dynamic range in Excel VBA
我正在尝试使用基于日期的可变范围自动填充 table(例如日期范围 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
如果您的支出 table 的第一列在 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 应该比自动填充到目标范围更容易。
我正在尝试使用基于日期的可变范围自动填充 table(例如日期范围 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
如果您的支出 table 的第一列在 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 应该比自动填充到目标范围更容易。