1

我正在尝试使用 Excel 从数据透视表中提取列值和数据值。

For j = 1 To 1 'pt.RowFields(i).PivotItems.Count
    sum = pt.DataFields(2).PivotItems(j)
    Client = pt.RowFields(1).PivotItems(j)
    Sheets("InvoiceTemplate").Range("c7").Value = Client
    Sheets("InvoiceTemplate").Range("i13").Value = sum
Next

Client 值完全按预期返回。但是,总和值会引发错误:

Unable To Get PivotItems Property from PivotField class.

使用如下所示的数据透视表,我预计 Contoso 的结果和 £60.50

                  net           gross

Contoso           £50.00        £60.50
Adventureworks    £100          £110.00

关于我做错了什么的任何想法?顺便说一句,我知道我有一个 1 TO 1 循环,但是一旦它工作,它就会被修改。

4

1 回答 1

0

我认为这可以满足您的要求:

Sub PrintPivotFields()
Dim pvt As Excel.PivotTable
Dim pvtAcctField As Excel.PivotField
Dim pvtNetField As Excel.PivotField
Dim pvtItem As Excel.PivotItem

Set pvt = ActiveCell.PivotTable
Set pvtAcctField = pvt.RowFields(1)
Set pvtNetField = pvt.DataFields(1)
For Each pvtItem In pvtAcctField.PivotItems
    Debug.Print pvtItem.Name
    Debug.Print Intersect(pvtItem.DataRange.EntireRow, pvtNetField.DataRange).Value
Next pvtItem
End Sub

我没有参考 Jon Peltier 的这个很棒的 VBA 数据透视表参考,但如果你这样做了,你可能会找到更好的方法。

于 2013-09-02T15:22:11.033 回答