Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 筛选透视表中的字段并获取可见值_Excel_Vba - Fatal编程技术网

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

我刚刚运行了这个代码。这对我很有效。