我有数据透视表 . 我手动添加了3个计算字段 f1,f2,f3 . 我希望能够根据用户选择使用vba构建数据透视报告 .

例如:1 . 首先,用户选择要添加的“常规”字段(与将数据透视表字段列表中的字段拖动到值区域相同)

'Add a pivot Filed to graph as Y axis
Sub AddPivotFieldToColValues(fName As String)
    Dim objField As PivotField

    'Get pivot field
    Set objField = GetPivotFieldByName(fName)

    'Add to col list
    objField.Orientation = xlColumnField
End Sub

Function GetPivotFieldByName(fName As String) As PivotField
    Set GetPivotFieldByName = pivotTable.PivotFields(fName)
End Function

这有效 .

  • 用户还选择要添加到报告值的计算字段 f1
Sub AddCaclulatedFieldToColValues(fName As String)
        Dim objField As PivotField

        Set objField = GetCalculatedFiledByName(fName)

        objField.Orientation = xlColumnField

End Sub

Function GetCalculatedFiledByName(name As String) As PivotField

    'Loop over all calculated fields
    For Each f In pivotTable.CalculatedFields

            'Test name
            If (f.name = name) Then
                    'Return field
                     Set GetCalculatedFiledByName = f

                     'Field found - exit loop
                     Exit For
            End If
   Next

结束功能

设置字段Orientation时失败 .

运行时错误1004应用程序定义或对象定义的错误

我认为它可能是名称的东西,因为当手动将计算字段添加到值时,Excel名称正在改变 . 并在尝试重命名时(通过值字段设置 - >自定义名称),消息为:

数据透视表字段已经存在

请指教 .