使用excel VBA隐藏数据透视表项

时间:2015-04-21 05:35:23

标签: excel vba excel-vba

我想检查Colum A和E列值,然后根据值折叠Pivot表。

myfile.Sheets(3).Select
Dim dd As Range
Dim ee As Range
Dim ff As String
     For Each ee In myfile.Sheets(3).Range("E1:E20000")
     For Each dd In myfile.Sheets(3).Range("A1:A20000")
         With ee
            If Left(dd.Value, 1) = "F" And ee.Value = "0.00" Or ee.Value = "(0.00)" Then ff = Left(dd.Value, 10)
            ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(ff).ShowDetail = False
        End With
     Next
     Next

我认为错误出现的地方。特别是变量ff。

ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(ff).ShowDetail = False

1 个答案:

答案 0 :(得分:0)

尝试将您的字符串放入引号中。所以喜欢

ActiveSheet.PivotTables(1).PivotFields("Ref 1").PivotItems(""" & ff & """).ShowDetail = False

此外,如果FF没有设置,它仍然试图折叠枢轴。因此,请尝试将其放在if语句if FF <> "" then .....showdetails = false

编辑更新的代码应该可行。

myFile.Sheets(3).Select
Dim i As Long
Dim ff As String

For i = 5 To 5000
    If Left(ActiveSheet.Range("A" & i).Value, 1) = "F" And ActiveSheet.Range("E" & i).Value = "0" Then
        ff = Left(ActiveSheet.Range("A" & i).Value, 10)
        If ff <> "" Then
            For j = 1 To ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems.Count
                If ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems(j).Name = ff Then
                    ActiveSheet.PivotTables("PivotTable1").PivotFields("Ref 1").PivotItems(j).ShowDetail = False
                End If
            Next
        End If

    End If
Next i

pivotItems正在寻找一个索引。所以我已经遍历所有这些以查看FF是否与它们的名称相匹配。如果是这样,它将隐藏细节。

让我知道这是否有效。