Se puede por medio de una variable montar un campo calculado para una macro

He generado un macro para que genere un campo calculado en una tabla dinámica y este se compone de sumar varias columnas, pero el tema es que los nombres de las columnas varían; lo intente montar con una variable pero no sirve de que otra manera se puede hacer.

1 Respuesta

Respuesta
1

Te anexo la macro para validar que las celdas tengan datos, si tienen datos te crea el campo calculado.

Sub CampoCalculado()
'Por.Dante Amor
    lider1 = Hoja5.[B4]
    lider2 = Hoja5.[C4]
    lider3 = Hoja5.[D4]
    lider4 = Hoja5.[E4]
    lider5 = Hoja5.[F4]
    If lider1 <> "" Then cad = lider1
    If lider2 <> "" Then cad = cad & "+" & lider2
    If lider3 <> "" Then cad = cad & "+" & lider3
    If lider4 <> "" Then cad = cad & "+" & lider4
    If lider5 <> "" Then cad = cad & "+" & lider5
    '
    If cad <> "" Then
        cad = "=" & cad
        cad = "=" & lider1 & "+" & lider2 & "+" & lider3 & "+" & lider4 & "+" & lider5
        On Error Resume Next
        ActiveSheet.PivotTables(1).CalculatedFields("Total General").Delete
        On Error GoTo 0
        ActiveSheet.PivotTables(1).CalculatedFields.Add _
            "Total General", cad, True
        ActiveSheet.PivotTables(1).PivotFields("Total General").Orientation = _
            xlDataField
    End If
End Sub

Saludos.Dante Amor

Disculpa, se me fue una línea, esta es la macro:

Sub CampoCalculado()
'Por.Dante Amor
    lider1 = Hoja5.[B4]
    lider2 = Hoja5.[C4]
    lider3 = Hoja5.[D4]
    lider4 = Hoja5.[E4]
    lider5 = Hoja5.[F4]
    If lider1 <> "" Then cad = lider1
    If lider2 <> "" Then cad = cad & "+" & lider2
    If lider3 <> "" Then cad = cad & "+" & lider3
    If lider4 <> "" Then cad = cad & "+" & lider4
    If lider5 <> "" Then cad = cad & "+" & lider5
    '
    If cad <> "" Then
        cad = "=" & cad
        On Error Resume Next
        ActiveSheet.PivotTables(1).CalculatedFields("Total General").Delete
        On Error GoTo 0
        ActiveSheet.PivotTables(1).CalculatedFields.Add _
            "Total General", cad, True
        ActiveSheet.PivotTables(1).PivotFields("Total General").Orientation = _
            xlDataField
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas