我试图使用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
客户端值完全按预期返回。但是,sum值会引发错误:
Unable To Get PivotItems Property from PivotField class.
使用如下所示的数据透视表,我预计会有Contoso的结果和£60.50
net gross
Contoso £50.00 £60.50
Adventureworks £100 £110.00
知道我做错了什么吗?顺便说一下,我知道我有一个1到1的循环,但一旦这个工作就会被修改。
答案 0 :(得分: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的great VBA pivot table reference,但如果你这样做,你可能会找到更好的方法。