首页 > 解决方案 > 如何使用 VBA 从它的第一个行字段中获取实际的可透视数据

问题描述

感谢您过去的所有帮助。我再次陷入困境,经过多次尝试后我无法解决它,再次需要您的帮助。

我想提取应用所有过滤器后显示在数据透视表中的第一个行字段的值。下面的代码提供了第一个行字段的所有值,即使数据透视表中只显示了 5 个值。

在此处查看屏幕截图:

图片

如上图所示,我只想要 7、41、60、61、62 值,但是循环正在为源数据的所有 80 个 SN.NO 运行。

Sub GetRowItems()

    Dim pi As PivotItem
    Dim val As String

    'Set variables
    ThisWorkbook.Worksheets("Report").Activate
    Set pt = ActiveSheet.PivotTables(1)
    Set pf = pt.RowFields(1)

    'pt.PivotFields(pf.Name).DataRange.Select
    If pf Is Nothing Then Exit Sub

    For j = 1 To pf.PivotItems.count
        'MsgBox pf.PivotItems(j).Name
        val = pf.PivotItems(j).Name
    Next j

End Sub

标签: excelvbapivot-table

解决方案


Sub GetRowItems()

ThisWorkbook.Worksheets("Report").Activate

Set pt = ActiveSheet.PivotTables(1)
Set pf = pt.TableRange1.Columns(1)

If pf Is Nothing Then Exit Sub
pf.Select

    For Each cell In Selection.Range(Cells(2, 1), Cells(Selection.Rows.Count - 1, 1))
    'Because you have Grand Totals for rows <Selection.Rows.Count - 1>
    'Else <Selection.Rows.Count>
    Debug.Print cell
    Next

End Sub

推荐阅读