数据透视表的报告筛选器如何使用“大于”条件

21

我有一个数据透视表,其中一个字段(Probability)在报告筛选器中。它的值是百分比,步长为5(0、5、10、15、...、100)。我想使用它来过滤大于或等于某个值的概率,但筛选器只能筛选精确选择。

目前,我使用了一种解决方法:允许多个值,然后从我想要的阈值选择所有值,一直到100。除了很笨拙外,这种解决方案还不能显示我的选择,而这个表格被打印出来时这是必要的。筛选器的显示值为“(多个值)”,我想显示所有选定的值,甚至更好的是像“>=20%”这样的内容。我真的不介意它们是否显示在字段本身或数据透视表外的另一个单元格中。

我的问题: 1)我可以让筛选器对我的选择进行>=筛选吗?如果不行 2)我可以显示多个选择,例如“>=20%”吗?

7个回答

15
我知道有点晚,但如果对任何人有帮助的话,我认为您可以向数据添加一列,计算概率是否大于等于“PivotSheet”$D$2(引用“透视表”工作表上的单元格)。
然后,将该列添加到您的透视表中,并使用新列作为“真/假”过滤器。
然后,您可以更改存储在所引用单元格中的值,以更新您的概率阈值。
如果我正确理解了您的问题,这可能会得到您想要的结果。筛选器值将显示在带透视表的工作表上,并且可以更改以适应概率阈值的任何快速更改。T / F过滤器可以标记为“高于/等于概率阈值”或类似名称。
我曾经用过这个方法来完成类似的任务。在透视表工作表上拥有单元格引用非常方便,因此我可以更新该值并刷新透视表以快速修改结果。那些我为其工作的人无法确定阈值应该是多少。

4
在 Excel 数据透视表中,您是正确的,筛选器只允许明确选择的值。但如果将筛选字段放置在数据透视表的行或列上,则会获得更广泛的标签筛选条件,包括大于。如果你在你的情况下这样做,那么添加的好处将是匹配您条件的各种概率水平显示在表的主体部分。

很遗憾,概率必须保留在页面级别。有没有办法通过VBA获取所选过滤器的值?这样我就可以在表格外部的单元格中显示它们... - Lukasz
我不确定你所说的“停留在页面级别”是什么意思。 - MattClarke
我的意思是它必须留在报告筛选器部分。 - Lukasz
一种方法是从我的建议开始,将概率包含在数据透视表中而不是筛选器中,然后执行某些操作,将数据透视表该列中的所有值连接起来,并将连接的字符串显示在数据透视表上方的单元格中。我想到的连接方式在https://dev59.com/X2sz5IYBdhLWcg3wDzwA中有讨论。 - MattClarke

1
一种方法是将你的字段从筛选器部分拉入到透视表的行部分。然后使用菜单上的组选项,将你想要保留的值分组。完成后,将字段拖回到筛选器部分。分组将保持不变,你可以勾选或取消一个框来删除许多值。

这正是我要找的,这应该有更多的点赞。 - bavShehata

0

我不能确定这个方法是否会对你有所帮助,但是我刚刚找到了一种解决类似问题的方法。在数据透视表中,

  1. 右键单击并选择“数据透视表选项”
  2. 选择显示选项
  3. 取消勾选第一个“显示展开/折叠按钮”
  4. 勾选“传统数据透视表布局(启用网格字段拖动)”
  5. 点击“确定”。

这样可以优化数据。然后,我只是将这些数据复制并粘贴到了一个新的选项卡中,在该选项卡中,我对我的总计列应用了过滤器,并将其值设置为大于某个百分比。

在我的情况下,这种方法确实有效,希望它也能对你有所帮助。


0
也许在您的数据源中添加一列,该列对所有行进行sumif求和。 不确定您的数据是什么样子,但类似于=(sumif([包含透视表行标题的列],[当前行标题值],概率列)>0.2)。 这将在透视表显示大于20%时返回True。
然后在透视表上为此列添加一个过滤器,只显示TRUE值。

0
经过一些研究,我最终得到了一个VBA代码,可以在另一个单元格中显示筛选值:
Dim bRepresentAsRange As Boolean, bRangeBroken As Boolean
Dim sSelection As String
Dim tbl As Variant
bRepresentAsRange = False
bRangeBroker = False

With Worksheets("Forecast").PivotTables("ForecastbyDivision")
            ReDim tbl(.PageFields("Probability").PivotItems.Count)
            For Each fld In .PivotFields("Probability").PivotItems

                If fld.Visible Then
                    tbl(n) = fld.Name
                    sSelection = sSelection & fld.Name & ","
                    n = n + 1
                    bRepresentAsRange = True
                Else
                    If bRepresentAsRange Then
                        bRepresentAsRange = False
                        bRangeBroken = True
                    End If
                End If

            Next fld

            If Not bRangeBroken Then
                Worksheets("Forecast").Range("ProbSelection") = " >= " & tbl(0)
            Else
                Worksheets("Forecast").Range("ProbSelection") = Left(sSelection, Len(sSelection) - 1)
            End If

        End With

-1

使用值过滤器。单击行标签旁边的下拉箭头,您将看到排序 A 到 Z、标签筛选器和值筛选器之间的选择。选择大于某个值的值筛选器,将让您选择要用于过滤行的列,即使该列本身没有下拉箭头。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接