使用excel VBA隐藏数据透视表项
我想检查列A和列E的值,然后根据这些值折叠透视表使用excel VBA隐藏数据透视表项,vba,excel,Vba,Excel,我想检查列A和列E的值,然后根据这些值折叠透视表 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.
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
试着把你的字符串加上引号。很像
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
数据透视项正在查找索引。因此,我已经遍历了所有这些文件,以查看FF是否与它们的名称匹配。如果它这样做,它将隐藏细节
让我知道这是否有效。我尝试了这个,但仍然不起作用。我认为还有一个问题与选择范围有关。我只想比较同一行。第A5行和第E5行不是每一个组合。我用下面的一个更新了我的编码,现在没有错误,但也没有发生任何事情。myfile.Sheets3。如果LeftActiveSheet.RangeA&I.Value,请选择Dim I,只要Dim ff作为I=5到5000的字符串,1=F和ActiveSheet.Range&i.Value=0.00,则ff=LeftActiveSheet.RangeA&i.Value,10如果ff,则ff=ActiveSheet.PivotTables数据透视表1.PivotFieldsRef 1.PivotItemsff.ShowDetail=False下一步我已经更新了上述答案。让我知道它是否有效。