【问题标题】:Autofill a table with a dynamic range in Excel VBA在 Excel VBA 中使用动态范围自动填充表格
【发布时间】:2018-06-28 01:45:18
【问题描述】:

我正在尝试使用基于日期的可变范围自动填充表格(例如,日期范围为 2018 年 6 月 10 日 - 2018 年 6 月 13 日,它从 2018 年 6 月 10 日到 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

【问题讨论】:

    标签: excel autofill vba


    【解决方案1】:

    如果 Spend 表的第一列在 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 应该比自动填充到目标范围更容易。

    【讨论】:

    • 嘿,您实际上在我的工作表中发现了一个错误。我遇到的问题是表格的开头是未知的,并且不在 O 中。我将更新上面的代码以反映 lastrow 不应该在 O 中,而是在表格的第一列。
    • 已编辑以反映未知的第一列。
    • 嘿,谢谢您的解决方案,但它填写了从开始日期到结束时间的日期。我需要它填写从 LastRow 中的日期到 C1 中的结束日期
    • 我以为 datePeriod 是一个代表天数的整数。如果是实际停止日期,则将Stop:=.Value + datePeriod 更改为Stop:=datePeriod
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2010-12-04
    相关资源
    最近更新 更多