我有这段代码,可以取消选择每个小于 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。值遇到"NA"。我将代码调整为:
If pi.Value < 10 or pi.Value ="NA" or pi.Value ="(Blank)" Then pi.Visible = False
但是,我仍然收到相同的错误消息。 我们有办法解决这个问题吗?
这应该使其工作:
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
谢谢拉尔夫!我将代码调整为如下所示,它摆脱了 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