Excel 自动添加一行,其中包含输入年数的公式

Excel 自动添加一行,其中包含输入年数的公式

我想建立一个模型。我希望有一个输入页面,您可以在其中输入要涵盖的年份范围。根据输入的年份数,我希望一个表格(在不同的工作表上)填充现有公式。

更具体地说,我有一张充满公式的表格,其中每一行代表一年,范围从 2005 年到 2014 年。
我的要求如下:

有没有办法制作一个输入页面,输入年份并根据输入的范围更改表格并添加/减去行?例如,我们将输入页面上的范围更改为 2005-2018,然后我的表格将添加带有公式的 4 行。

答案1

解决方案
为了实现此自动化,请使用一些 VBA 代码在更新开始年份和结束年份后调整表格大小。

代码
以下是我的实现,其中年份在“Sheet1”(单元格 B1 和 B2)中,表格在“Sheet2”中。请注意,必须将此代码添加到包含年份的工作表中,因为每当您在该工作表上进行任何更改时,代码都必须运行。因此,在我的情况下,此代码被添加到“Sheet1”。

Private Sub Worksheet_change(ByVal Target As Range)
    Dim StartYear, EndYour As Range
    Dim UpdateTable As ListObject
    Dim NrOfRows, OldNrOfRows As Integer

    ' Set some ranges
    Set StartYear = Worksheets("Sheet1").Cells(1, 2)
    Set EndYear = Worksheets("Sheet1").Cells(2, 2)
    Set UpdateTable = Worksheets("Sheet2").ListObjects("Table1")

    ' Check if start or end years have changed
    If (Not Intersect(StartYear, Target) Is Nothing) Or (Not Intersect(EndYear, Target) Is Nothing) Then
        ' Store the new and old number of rows
        OldNrOfRows = UpdateTable.ListRows.Count - 1
        NrOfRows = EndYear.Value - StartYear.Value + 1

        ' Resize the table
        UpdateTable.Resize UpdateTable.Range.Resize(1 + NrOfRows)

        'Delete cells below the table if it gets smaller
        If OldNrOfRows > NrOfRows Then
            UpdateTable.Range.Offset(NrOfRows + 1, 0).Resize(OldNrOfRows - NrOfRows + 1).Delete
        End If
    End If
End Sub

代码的一些解释
引用一些 Microsoft 函数/方法/属性来解释代码:

相关内容