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

クライアントの値は、期待どおりに正確に返されます。ただし、合計値はエラーをスローします。

Unable To Get PivotItems Property from PivotField class.

以下のようなピボットテーブルでは、Contoso と £60.50 の結果が期待できます。

                  net           gross

Contoso           £50.00        £60.50
Adventureworks    £100          £110.00

私が間違っていることについて何か考えはありますか?ところで、1 対 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 に答える