我有这个代码取消选择每个小于10的值,它可以工作。
Dim pt as PivotTable
Dim pf as PivotField
Dim pi as PivotItem
Set pt = ActiveSheet.PivotTables("PivotTable1")
Set pf = pt.PivotFields("Count")
For each pi in pf.PivotItems
If pi.Value < 10 Then pi.Visible = False
Next
但是我在这里有文本字符串(如“NA”和(空格))导致此公式不起作用。我收到一条错误消息:“运行时错误'13':当pi.Value遇到”NA“时键入不匹配”。我将代码调整为:
If pi.Value < 10 or pi.Value ="NA" or pi.Value ="(Blank)" Then pi.Visible = False
但是我仍然收到相同的错误消息。我们有办法解决这个问题吗?
答案 0 :(得分:1)
这应该有效:
If IIf(VarType(Pi.Value) = vbError, 0, Pi.Value) < 10 Then Pi.Visible = False
如果您真的只想删除Blanks
,Nulls
和Errors
,那么您也可以使用此功能:
For Each pi In pf.PivotItems
If IIf(VarType(pi.Value) = vbError Or _
VarType(pi.Value) = vbEmpty Or _
VarType(pi.Value) = vbNull, _
0, pi.Value) < 10 Then pi.Visible = False
Next
答案 1 :(得分:0)
谢谢拉尔夫!我调整代码看起来像这样,它摆脱了NA和空白。如果你有任何其他方法可以缩短这一点,我肯定会对此进行测试:)
For Each pi In pf.PivotItems
If IIf(VarType(pi.Value) = vbError, 0, pi.Value) < 10 Or _
IIf(VarType(pi.Value) = vbError, 0, pi.Value) = "NA" Or _
IIf(VarType(pi.Value) = vbError, 0, pi.Value) = "(blank)" _
Then pi.Visible = False
Next