Excel 筛选透视表中的字段并获取可见值
假设我有这样的数据Excel 筛选透视表中的字段并获取可见值,excel,vba,Excel,Vba,假设我有这样的数据 Company Department Size ================================= HCL BFS 50 HCL Insurance 60 CTS BFS 20 CTS Insurance 30 CTS Healthcare 50 在这里,假设我想过滤掉BF,并找到每个公司级别的剩余BF总数,如下所示 案例1:
Company Department Size
=================================
HCL BFS 50
HCL Insurance 60
CTS BFS 20
CTS Insurance 30
CTS Healthcare 50
在这里,假设我想过滤掉BF,并找到每个公司级别的剩余BF总数,如下所示
案例1:
Company Department Total
CTS Healthcare 50
Insurance 30
CTS Total 80
HCL Insurance 60
HCL Total 60
Grand Total 140
案例2:
CTS Healthcare 50
CTS Total 50
Grand Total 50
宏代码也尝试了相同的代码
那么,当运行宏时,我会得到什么作为输出呢?
编辑:
对于案例1,我得到的输出是HCL和CTS
---------------------------
Microsoft Excel
---------------------------
,CTS,HCL
---------------------------
OK
---------------------------
---------------------------
Microsoft Excel
---------------------------
,CTS,HCL
---------------------------
OK
---------------------------
对于案例2,我得到的输出是HCL和CTS
---------------------------
Microsoft Excel
---------------------------
,CTS,HCL
---------------------------
OK
---------------------------
那么,我期望得到什么样的输出呢?
对于案例1,我希望输出为HCL和CTS
---------------------------
Microsoft Excel
---------------------------
,CTS,HCL
---------------------------
OK
---------------------------
---------------------------
Microsoft Excel
---------------------------
,CTS,HCL
---------------------------
OK
---------------------------
对于情况2,我希望输出仅为CTS
---------------------------
Microsoft Excel
---------------------------
,CTS
---------------------------
OK
---------------------------
概括
请让我知道如何使用宏获得在过滤部门中的字段时可见的公司名称。以下是我最后用于在透视表中查找过滤数据的代码
Sub getVisibleFields()
' this will return all the rows that are visible in the
'pivot table. Even the subtotal rows
Set visibleCompany = ActiveSheet.PivotTables("PivotTable2") _
.PivotFields("Company").DataRange
For Each V In visibleCompany
' different values can be checked to filter out unwanted data
'to find data like "CTS Total 80"
If InStrRev(visibleCompany(i + 1), " Total") > 0 Then
MsgBox ("Total is " & visibleCompany(i + 1)
End If
str = (str & "," & V)
Next V
MsgBox str
End Sub
我刚刚运行了这个代码。这对我很有效。