使用基于 table 输入的公式调整 table 的大小

Resize a table with formulas based on table input

我想根据源table“源Table”上的输入调整table“ProductList”sheet“Final”的大小工作sheet“输入”(源自源table的字段有助于公式)。

例如:首先,我想刷新源 table,然后我想调整 Table“ProductList”的大小,其范围 F1:J4 位于 [=23] =] “最终”根据来源table 工作sheet “输入”具有当前范围 A1:D7 仅通过添加行每月增长。

将不胜感激。

调整 Excel Table

  • 这会将源 table 的行数调整为目标 table 的行数。
  • 如果目标 table 的行数比源 table 多的行将被删除。
  • 如果目标 table 包含公式并且行数少于源 table,新添加的单元格将相应更新。
Option Explicit

Sub SizeTable()
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim sws As Worksheet: Set sws = wb.Worksheets("Input")
    Dim stbl As ListObject: Set stbl = sws.ListObjects("Input")
    Dim srCount As Long: srCount = stbl.Range.Rows.Count
    
    Dim dws As Worksheet: Set dws = wb.Worksheets("Final")
    Dim dtbl As ListObject: Set dtbl = dws.ListObjects("ProductList")
    Dim drCount As Long: drCount = dtbl.Range.Rows.Count
    
    If drCount > srCount Then
        dtbl.Range.Resize(drCount - srCount).Offset(srCount).Delete
    End If
    
    dtbl.Resize dtbl.Range.Resize(srCount)
    
End Sub

OP(见评论)正在使用 PowerQuery 从 SQL 源中提取 table。通过 VBA re-sizing table 的替代方法是简单地修改原始 PowerQuery 代码以包含额外的 Id 列。然后 re-sizing 将在查询刷新时自动发生。

在 PowerQuery 编辑器中,您可以添加包含公式的自定义列。

你可以看到等式是:

=[CoCd] & "_" & Number.ToText([LSCH]) & "_" & Number.ToText([Material]) & "_" & Number.ToText([Month])

字符串连接运算符“&”仅适用于字符串,因此由于我的示例数据包含数字,因此我使用 Number.ToText() 进行转换。根据 SQL 源中的确切数据类型,这可能不是必需的。

接下来,在编辑器中,将新创建的 'Id' 列从右向左拖动。这将在 'Applied Steps' 列表中生成一个 'Reordered Columns' 行。

最后,'Close & Load' 从主菜单,你应该在你的 sheet 中得到这个输出:

如果您只想在名为 ProductList 的 table 中使用 SourceTable 查询的一个子集,那么您可以在工作簿内部设置 PowerQuery 以从源 table,然后刷新它(你可以设置对 SourceTable 的依赖,这样它会先被刷新)。