【问题标题】:Looping through pivot table VBA to idenitfy zero values循环遍历数据透视表 VBA 以识别零值
【发布时间】: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


【解决方案1】:

您必须使用 Range.Value 属性来检查范围是否包含数字零。 VBA 中的 Range 是一个对象,因此不能与数字进行比较(您必须指定要与零进行比较的 Range 的哪个属性)。

For Each PvItem In PvField.PivotItems
    If Range("B2:B" & lRow).Value = 0 Then

       For Each PvItemL In PvField2.PivotItems
       If Range("B2:B" & lRow).Value = 0 Then

           LabelRange.Interior.Color = vbYellow

        End If
    End If

Next

关于 lrow sn-p,尝试删除 Rows.Count 之前的点。

With ws
    lRow = .Range("B" & Rows.Count).End(xlUp).Row

【讨论】:

  • 感谢对象/属性的解释,实际上并不知道(显示我的 VBA 能力哈)。代码本身仍然出现不匹配错误?
猜你喜欢
  • 1970-01-01
  • 2019-11-14
  • 2021-09-18
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2022-01-04
相关资源
最近更新 更多