在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获得相同的结果?
答案 0 :(得分:0)
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生成的,因为它比&
或CONCATENATE
所需的所有输入更紧凑......
答案 1 :(得分:0)
我所寻找的是由Slicers提供的。切片器显示已选择且可打印的范围。将可见的Pivot Elements列表写入单元格是可能的,甚至可能使用棘手的Excel公式,但似乎过度设计它。
答案 2 :(得分:0)
TEXTJOIN函数可以做到这一点。从Excel 2016起。
TEXTJOIN函数组合来自多个范围和/或字符串的文本,并包括您在将要组合的每个文本值之间指定的定界符。如果分隔符为空文本字符串,则此函数将有效地将范围连接起来。