【问题标题】:List visible pivot items with Excel formula使用 Excel 公式列出可见的数据透视项目
【发布时间】:2016-08-16 23:46:35
【问题描述】:

在 Excel 数据透视表中,当我在报表筛选器中选择多个项目时,Excel 只会显示我选择了多个项目。

数据

我可以选择多个项目:

但是,一旦选择完成,我看不到我选择了哪些元素。

我想显示哪些项目被选中,例如打印报告时。我找到了一种使用 VBA 和用户定义函数的方法。

Function GetVisibleItems(FieldName As String) As String

    Dim PivotTable As PivotTable
    Set PivotTable = ActiveSheet.PivotTables(1)

    Dim PivotField As PivotField
    Set PivotField = PivotTable.PivotFields(FieldName)

    Dim PivotItem As PivotItem
    Dim Result As String

    For Each PivotItem In PivotField.PivotItems()
        If PivotItem.Name <> "(blank)" Then
            If PivotItem.Visible Then
                If Len(Result) > 0 Then Result = Result & ", "
                Result = Result & PivotItem.Name
            End If
        End If
    Next

    GetVisibleItems = Result

End Function

是否可以只使用 Excel 公式而不是 VBA 获得相同的结果?

【问题讨论】:

  • 我已经多次阅读您的问题,并且我不断地回过头来 - 在 Excel 中,您可以看到哪些项目是可见的!我认为我们需要一些上下文 - 你会使用包含可见项目列表的单元格来做什么?
  • 您可以在单击该字段时查看哪些项目是可见的。但是,当您打印出工作表时,您不再可以看到报告所基于的选择。这就是为什么我想在单独的字段中查看实际选择的原因。如果我可以在纯 Excel 中做到这一点,我就不必分发 .xlsm-file。
  • 你能模拟一个你正在寻找的简单例子吗?我试图提供一个答案,但我认为我在你的问题中遗漏了一些东西。
  • 我刚刚意识到 Excel 可以解决我的问题。不需要公式。只需使用切片器。

标签: vba excel excel-formula pivot-table


【解决方案1】:

Martin - 这可能不像您正在寻找的那么简单,但是使用工作簿函数来构建您正在寻找的字符串...

下面是一个简单的信息表...

...以及从中创建的数据透视表...

在数据透视图中,您可以看到 Person 2 和 Person 6 被过滤掉了。

回到表格,使用这个公式添加了一列(填写)...

=IF(ISERROR(GETPIVOTDATA("Grade",Sheet5!$A$3,$A$1,A2)),"",A2)

注意:Sheet5 包含数据透视表。 A3 是枢轴的左上角。

提供这个结果...

其中有空格而不是第 2 个人和第 6 个人。

字符串是使用Chip Pearson's StringConcat UDF 生成的,因为它比&amp;CONCATENATE 所需的所有类型都更紧凑...

【讨论】:

  • 好吧,我仍然需要 UDF 的 VBA。
【解决方案2】:

我正在寻找的内容由Slicers 提供。切片器显示已选择且可打印的范围。将可见枢轴元素列表写入单元格是可能的,甚至可能使用一个棘手的 Excel 公式,但似乎过度设计它。

【讨论】:

    【解决方案3】:

    TEXTJOIN 函数可以做到这一点。 Excel 2016 及更高版本。

    TEXTJOIN 函数将来自多个范围和/或字符串的文本组合在一起,并在将组合的每个文本值之间包含一个您指定的分隔符。如果分隔符是空文本字符串,此函数将有效地连接范围。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 2015-12-30
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      相关资源
      最近更新 更多