【问题标题】:Filter ShowDetails of PivotTable过滤数据透视表的 ShowDetails
【发布时间】:2015-09-24 17:07:35
【问题描述】:

我正在寻找过滤 PivotTable ActiveCell 的ShowDetails 的有效方法。我想将结果缩小到仅特定的列和行

比如说,原始数据(构建数据透视表的基础)有十列。我只想显示两列的详细信息,并且我只想选择具有特定数据的行,即特定列中没有空单元格。

这是我的起点:

Sub ShowDetailsAndFilterResults()
    On Error Resume Next
    Dim PT As PivotTable
    Set PT = ActiveCell.PivotTable

    If Not PT Is Nothing Then
        Selection.ShowDetail = True            
    End If     
End Sub

对于 SQL 用户来说,很容易想象我想要的 ShowDetails 命令解决方案仅获得受 SELECT 限制的结果,其中列出特定列并使用 WHERE 子句来获取行的更多条件。

【问题讨论】:

    标签: vba excel pivot-table


    【解决方案1】:

    这里有一些建议可以帮助你完成:

    Sub ShowDetailsAndFilterResults()
    
        Dim PT As PivotTable, _
            WsPt As Worksheet, _
            WsD As Worksheet
    
        On Error Resume Next
        Set PT = ActiveCell.PivotTable
        Set WsPt = ActiveSheet
    
        If Not PT Is Nothing Then
            ActiveCell.ShowDetail = True
            Set WsD = ActiveSheet
            With WsD
                '---Delete useless columns---
                .Range("C:C,E:E,G:G,H:H").Delete Shift:=xlToLeft
                '---Or just Hide useless columns---
                'Range("C:C,E:E,G:G,H:H").EntireColumn.Hidden = True
    
                '---Scan rows to filter them---
                For i = .Range("A" & .Rows.Count).End(xlUp).Row To 2 Step -1
                    If .Cells(i, 4) <> "test_value" Then
                        '---place the code regarding the test you have to do---
                    Else
                        '---lets say you want to keep the rows that are different of "test_value" on column 4
                        .Range("A" & i).EntireRow.Hidden = True
                        '---Or delete the rows that doesn't fit your criteria---
                        '.Range("A" & i).EntireRow.Delete Shift:=xlUp
                    End If
                Next i
            End With
        End If
    
        On Error GoTo 0
    End Sub
    

    如果过滤结果行的条件严格少于 3 个,则可以使用 AutoFilter 方法,但我发现它不太灵活,所以通常我更喜欢使用我在这里展示的循环。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2016-12-24
      相关资源
      最近更新 更多