【发布时间】:2014-11-27 08:28:50
【问题描述】:
我正在尝试找到一种方法来遍历上面的数据透视表。我的三行标签是“Desk”、“Product Type”和“Prod ID”。我要做的是确定 B 列中的条目等于 0 的“产品类型”,突出显示 B 列中等于 0 的“产品 ID”。
到目前为止我的尝试是(我意识到这是一团糟,我不太擅长 VBA),
Sub Pivot_Table()
'
' Pivot_Table Macro
'
Dim PvTable As PivotTable
Dim PvField As PivotField
Dim PvField2 As PivotField
Dim PvItem As PivotItem
Dim PvItemL As PivotItem
Set PvTable = ActiveSheet.PivotTables("PivotTable1")
Set PvField = PvTable.PivotFields("Product Type")
Set PvField2 = PvTable.PivotFields("Prod ID")
Dim lRow As Long
With ws
lRow = .Range("B" & .Rows.Count).End(xlUp).Row
For Each PvItem In PvField.PivotItems
If Range("B2:B" & lRow) = 0 Then
For Each PvItemL In PvField2.PivotItems
If Range("B2:B" & lRow) = 0 Then
LabelRange.Interior.Color = vbYellow
End If
Next
End If
Next
End With
End Sub
首先对于“lrow”,我遇到了一个我不明白的运行时错误,因为我之前使用过该代码的 sn-p。之后我不确定循环是否会起作用?
非常感谢任何帮助!
【问题讨论】:
-
在
With ws处,ws 仍然是一个空的 Variant ... 我发现你错过了Set ws = ActiveSheet -
正确,谢谢。仍然不确定循环,出现不匹配错误。不知道为什么语法:“For Each PvItem In PvField.PivotItems If Range("B2:B" & lRow) = 0 Then”不起作用?
-
当您没有在循环中的任何位置引用 PvItem 对象时,为什么要循环通过 PivotItems?也许您应该遍历范围内的单元格或实际使用数据透视项的值进行比较,而您不需要使用 lrow。
-
我不完全遵循?我正在尝试识别 A 列中的枢轴项,而 B 列中的相应值为 0。这就是我循环遍历枢轴项的原因。
标签: vba excel for-loop pivot-table