通过VBA函数插入GetPivotData公式

时间:2018-07-12 12:55:26

标签: excel vba

我正在尝试将GetPivotData公式插入某些单元格中。
最多有7个数据透视表来获取数据,因此我需要动态地进行处理:

Function Formula(KPI As String, FilaTD As Integer, ColumnaTD As Integer, Filtro1 As String, _
    Simple As Boolean, Optional Filtro2 As String)

    If Simple = True Then
        Formula = "IFERROR(GETPIVOTDATA(" & Comillas & KPI & Comillas & ",'TDReport Control Desk'!R" & _
        FilaTD & "C" & ColumnaTD & "," & Filtro1 & ",RC2),0)"
    Else
        Formula = "IFERROR(GETPIVOTDATA(" & Comillas & KPI & Comillas & ",'TDReport Control Desk'!R" & _
        FilaTD & "C" & ColumnaTD & "," & Filtro1 & ",RC2),GETPIVOTDATA(" & Comillas & KPI & Comillas & _
        ",'TDReport Control Desk'!R" & FilaTD & "C" & ColumnaTD & "," & Filtro2 & ",RC2))"
    End If

End Function

名为“ Comillas”的字符串只是一个常量:

Public Const Comillas As String = """"""

我这样称呼这个函数:

FormulaPrevisionAtenMesCentro = Formula(KPI2, FilaTDOffCentro, ColumnaTDOffCentro, "Centro", True)

FormulaPrevisionAtenDiaCentro = Formula(KPI2, _
FilaTDOffDiaCentro, ColumnaTDOffDiaCentro, "Centro", True)

FormulaPrevisionAtenMes = Formula(KPI2, _
FilaTDOffMes, ColumnaTDOffMes, "Modo2", False, "Modo3")

FormulaPrevisionAtenDia = Formula(KPI2, _
FilaTDOffDia, ColumnaTDOffDia, "Modo2", False, "Modo3")

FormulaKPIMes = Formula(KPI, _
FilaTDOffMes, ColumnaTDOffMes, "Modo2", False, "Modo3")

FormulaKPIMesCentro = Formula(KPI, FilaTDOffCentro, ColumnaTDOffCentro, "Centro", True)

FormulaKPIDia = Formula(KPI, _
FilaTDOffDia, ColumnaTDOffDia, "Modo2", False, "Modo3")

FormulaKPIDiaCentro = Formula(KPI, FilaTDOffDiaCentro, ColumnaTDOffDiaCentro, "Centro", True)

我的问题出在 Comillas 内。如果使用它,它将引发VBA错误。如果我不使用它,那么该公式将被插入但不会起作用,因为我要的字段将不在“”之间。

1 个答案:

答案 0 :(得分:2)

应该是:

model

因为您只希望公式在值的两边都包含一个单引号。您只需要将带引号的字符串放在公式字符串中,而不是将其串联时,将它们加倍。