如何制作动态大小的数据表?

Gif*_*guy 5 datatable excel excel-formula

我正在使用 Excel 2010。

我有一个与此类似的“每月”数据表:

MonthBegin    InventoryExpenses  Overhead  TotalSales  TotalSalesIncome  TotalProfit
July-11       $1,500             $4,952    89          $7,139            $687
August-11     $2,200             $4,236    105         $8,312            $1,876
September-11  $1,100             $4,429    74          $6,691            $1,162
Run Code Online (Sandbox Code Playgroud)

以下公式会自动传播到 [MonthBegin] 列中的每个单元格:

=DATE( 2011, 7 + ( ROW( ) - 2 ), 1 )
Run Code Online (Sandbox Code Playgroud)

每个其他列都有一个类似的列公式,它根据 [MonthBegin] 列中列出的月份自动从另一个来源提取适当的数据。

通过这种配置,我可以在表格的任意位置插入一个新行,下个月将自动以正确的顺序出现在底部(我觉得这很不错)。

但我需要将其提升到更高的自动化水平,以取悦管理层。
我怎样才能让电子表格在一个月结束后自动为十月添加一行?

我一直在考虑为表格使用动态范围:

=OFFSET(A1,0,0,( ( YEAR( TODAY( ) ) - 2011 ) * 12 ) + ( MONTH( TODAY( ) ) - 7 ),6)
Run Code Online (Sandbox Code Playgroud)

...但 Excel 不会接受这样的表格区域公式,我认为是因为它不是静态的。
谁能向我解释如何使用我的数据表获得此功能?

JMa*_*Max 4

您无法仅使用公式动态添加新行。

下面是一个可以解决这个问题的 VBA 事件过程。您需要输入Workbook module

Option Explicit

Private Sub Workbook_Open()
Dim lo As ListObject
Dim iTot As Long
Set lo = ListObjects("MyTable")
iTot = lo.Range.Rows.Count

'Add this statements before the Range with your worksheet name
'ThisWorkbook.Worksheets("Sheet1")
If Now() > Range("A" & iTot).Value Then
    Range("A" & lo.Range.Rows.Count + 1).Formula = "=DATE( 2011, 7 + ( ROW( ) - 2 ), 1 )"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)

不要忘记更改表的名称并添加工作表的名称(请参阅代码内的注释)