【问题标题】:How to get the range of "Total Sum" column in a pivot table? Excel VBA如何获取数据透视表中“总和”列的范围? Excel VBA
【发布时间】:2019-04-19 03:56:18
【问题描述】:

是否可以使用 excel vba 从数据透视表中获取总和列的范围。我所指的范围在下面的屏幕截图中,以黄色突出显示。

我尝试在 excel 中使用宏记录器,看看它是否可以帮助回答我的问题。这导致我得到这个。

ActiveSheet.PivotTables("PivotTable1").PivotSelect _
    "'Sum of Unit Cost' 'Row Grand Total'", xlDataAndLabel, True

但是,这会选择一个超出屏幕截图所需范围的范围。

我可以做一些事情,比如偏移 2 行选择的内容,然后调整它的大小以适应预期的范围,但我想知道是否有更直接的方法来做到这一点。

【问题讨论】:

标签: excel vba


【解决方案1】:

您可以使用此代码选择总计。如果您还需要它,它适用于行和列。最后一部分是删除最后一行(或列)。

Sub SelectGrandTotal()

  Dim pt As PivotTable
  Dim rColumnTotal As Range, rRowTotal As Range
  Dim numrows As Long, numcolumns As Integer
  
  Set pt = ActiveSheet.PivotTables(1)
  
  With pt
  
    'The conditions below are checking if the GrandTotals are activated. Not really necessary in some cases.
    
    'Uncomment this block to work with Columns
    'If .ColumnGrand Then
    '  With .DataBodyRange
    '    Set rColumnTotal = .Rows(.Rows.Count)
    '    rColumnTotal.Select
    '  End With
    'End If

    If .RowGrand Then
      With .DataBodyRange
        Set rRowTotal = .Columns(.Columns.Count)
        rRowTotal.Select
        
      End With
    End If
  End With
  
    'Resizes selection and removes last Row (you can do the same for columns if necessary)
    numrows = Selection.Rows.Count
    numcolumns = Selection.Columns.Count
    Selection.Resize(numrows - 1, numcolumns).Select

End Sub

【讨论】:

    【解决方案2】:

    尝试将xlDataAndLabel 更改为xlDataOnly;查看 docs.microsoft 上的 XlPTSelectionMode 枚举或在 对象浏览器 (F2) 中找到所有可用成员的列表。

    【讨论】:

    • 尝试将其更改为 xlDataOnly 并进行了改进。它忽略了顶部的标签,但仍将总价值放在底部。谢谢你。我可以处理这个。
    • @DSM 也从选择字符串中删除 'Row Grand Total'
    • 删除“行总计”将选择所有标记为“单位成本总和”的数据透视表列。
    • 呸,这就是凌晨 2 点 aircode 的作用……我想如果总行总有那么你可以简单地调整选择的大小。
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多