删除空白Excel数据透视表条目

删除空白Excel数据透视表条目,excel,pivot-table,powerpivot,Excel,Pivot Table,Powerpivot,我有一个基于PowerPivot的透视表,在Rows部分有多个级别。相当多的元素是空白的。有没有方法来抑制空白行? 我的透视表现在看起来像这样 Product1 Release 1 Iteration 1 (blank) Iteration 2 (blank) Release 2 (blank) (blank) Product2 (blank) Prod

我有一个基于PowerPivot的透视表,在Rows部分有多个级别。相当多的元素是空白的。有没有方法来抑制空白行?

我的透视表现在看起来像这样

Product1
    Release 1
        Iteration 1
            (blank)
        Iteration 2
            (blank)
    Release 2
        (blank)
            (blank)
Product2
    (blank)
Product3
    Release 1
        Iteration 1
            Sprint 1
            (blank)
        (blank)
(blank)
这就是我想要的样子

Product1
    Release 1
        Iteration 1
        Iteration 2
    Release 2
Product2
Product3
    Release 1
        Iteration 1
            Sprint 1
这只是一个例子。我尝试为每个级别设置过滤器,使其不显示空白,但如果我过滤每个级别以隐藏空白字段,则透视表中没有任何项目。似乎Excel最终会过滤掉每一个有空值的级别

不确定我是否有意义或提供了足够的故障排除信息。我现在几乎脑死亡,所以我道歉

请让我知道,如果它没有意义,或者如果我可以提供任何额外的信息,以澄清我试图做什么和遇到

谢谢


编辑:将代码块更改为更清晰,并添加一个“after”代码块以显示我想要的内容。我想问题在于整个透视表的行“深度”必须相等。例如,如果第一个项目有3个缩进,其他项目也必须显示3个缩进级别的数据。如果我隐藏空格,并且这会导致第一个项目的数据缩进值为1,那么如果其他项目的非空格出现在1缩进之后,它也会隐藏它们。仍然不确定这是否有意义:)我需要一些睡眠。

我认为您应该能够在数据透视表选项下的显示中选中
显示行上没有数据的项目和/或
显示列上没有数据的项目。

我使用了一个扁平的数据透视表,而不是从PowerPivot的“管理”屏幕。这似乎满足了我的需要。

尝试选择数据透视表中的a单元格“空白”,按delete按钮并按空格键。

不知道这是为什么或如何工作的,但我选择了数据透视表中包含(空白)的一个单元格,然后选择热空格键。然后我按回车键,同一列中的所有(空白)单元格都变为空白。对表中的其他列重复此操作。

我需要解决完全相同的问题,但希望在更改数据透视表筛选或刷新数据时自动隐藏行,因此我在保存数据透视表的工作表上编写了一个从“工作表\数据透视表更新”事件调用的函数,我想如果你愿意的话,你可以按一下按钮把它开过去。这项工作最初是通过扫描数据透视表中的每一行来完成的,如果该行可见且不需要(因为该行的第一个单元格为“(空白)”),则隐藏该行;如果该行隐藏且不应该隐藏,则显示该行;否则,只需将其保持为隐藏或可见即可

但是,我发现函数运行得非常慢,所以这是我的下一个尝试,它最初不隐藏数据透视表中的所有行,然后去查找第一列中的所有空白单元格,将它们添加到范围对象中,然后为该范围中的每个单元格隐藏整个行。此版本的工作速度约为10倍:-)

传入数据透视表所在的工作表的名称、数据透视表的名称以及在需要隐藏的行中查找的可选字符串;如果不是由调用函数提供,则默认为“(空白)”

如果我违反了任何人的变量或函数命名约定,请提前道歉(我只是一名黑客;-)

我想用一个Go to Special type函数来选择第一列中的所有“空白”单元格,但找不到任何符合要求的单元格,因此如果您知道如何执行此操作,请告诉我,因为这会加快速度


我希望这能帮助别人

我试过了,可惜运气不好。谢谢你的回复。我还有其他想法可以尝试吗?不用担心:)谢谢你。是的,我有,但运气不好。一旦我设置了过滤器,它也会刷新。请注意,如果选择整个工作表来插入数据透视表,而不是只插入数据透视表中所需的数据,则可能会出现这些空白。@Adjit,谢谢,这显然在使用epplus以编程方式生成数据透视时也有效。
Sub FixBlankPivotRowsV2(ByVal SheetName As String, ByVal PivotName As String, Optional HideDefn as String = "(blank)")
Dim CurrPivot As PivotTable
Dim CurrRow As Range
Dim BlankRange As Range        'NB This is where we'll build the range of things to hide, which will initially be Nothing, as we never initialise it.
Dim oldStatusBar As Boolean

'Show a nice message in the status bar
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Hiding blank entries in " & SheetName & ", back in a sec..."
Application.ScreenUpdating = False

'Get the pivottable to work with        
Set CurrPivot = ActiveWorkbook.Sheets(SheetName).PivotTables(PivotName)

'Unhide all of the pivot rows first
CurrPivot.RowRange.Rows.EntireRow.Hidden = False

'Loop around each row in the pivottable
For Each CurrRow In CurrPivot.RowRange.Rows
    If CurrRow.Offset(0, 0).value = HideDefn Then
        If BlankRange Is Nothing Then
            'This is the first blank row we've found, so just set the range up to be the first cell of that range
            Set BlankRange = CurrRow.Offset(0, 0)
        Else
            'Add the newly found blank row to the range using a Union
            Set BlankRange = Union(BlankRange, CurrRow.Offset(0, 0))
        End If
    End If
Next

'Only hide things if there's anything to hide!
If BlankRange Is Nothing Then
    Debug.Print "Nothing to hide!"
Else
    BlankRange.EntireRow.Hidden = True
End If

'Set the status bar back the way it was
Application.ScreenUpdating = True
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
End Sub