使用vba

时间:2017-09-03 09:28:30

标签: excel-vba pivot-table calculated-field vba excel

我有数据透视表。 我手动添加了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

这很有效。

  1. 用户还会选择要添加到报告值的计算字段 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
    

    结束职能

  2. 设置字段方向时失败。

      

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

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

      

    数据透视表字段已存在

    请建议。

0 个答案:

没有答案