【问题标题】:Choose function values unmatched in pivot table选择数据透视表中不匹配的函数值
【发布时间】:2016-02-10 12:19:27
【问题描述】:

我是 VBA 新手,我正在编写此宏以从数据透视表中获取值并将它们存储在数据透视表附近的单元格中。 问题是当在数据透视表中找不到选择函数中写入的任何值时,它显示应用程序定义或对象定义的错误,我无法从选择中删除字段,因为该值可以在将来更新数据透视表时出现。

在这方面的任何帮助将不胜感激。

For i = 1 To 8

  Set rng = Intersect(pt.PivotFields("Category").PivotItems("Technical").DataRange.EntireRow, _
  pt.PivotFields("Office").PivotItems(Choose(i, "Mum", "blore", "chen", "delhi", "chandigarh", "hyd", "pune", "noida")) _
  .DataRange.EntireRow, pt.PivotFields("Total").DataRange)

  If rng Is Nothing Then

  Else

    Worksheets(6).Range(Choose(i, "AF29", "AF23", "AF24", "AF25", "AF30", "AF26", "AF27", "AF28")).value = CInt(WorksheetFunction.Percentile(rng, 0.95))

  End If

Next i

【问题讨论】:

  • 实际上 Choose() 不会导致您的代码出现任何错误。因为 Loop 将从 1 变为 8,并且 Choose() 将检索该关联循环计数器的相关单元格引用。
  • 但是在某些情况下该数据透视表中不存在值,当找不到该值时如何跳过循环。或者还有其他方法吗?

标签: excel vba


【解决方案1】:

使用错误处理程序来处理该问题。

For i = 1 To 8
    On Error Resume Next
        Set Rng = Intersect(pt.PivotFields("Category").PivotItems("Technical").DataRange.EntireRow, _
        pt.PivotFields("Office").PivotItems(Choose(i, "Mum", "blore", "chen", "delhi", "chandigarh", "hyd", "pune", "noida")) _
        .DataRange.EntireRow, pt.PivotFields("Total").DataRange)
    On Error GoTo 0

    If Not Rng Is Nothing Then
        Worksheets(6).Range(Choose(i, "AF29", "AF23", "AF24", "AF25", "AF30", "AF26", "AF27", "AF28")).Value = CInt(WorksheetFunction.Percentile(Rng, 0.95))
    End If
Next i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多