Se référer à une gamme de cellules dans une formule dans VBA Excel

J'essaie d'utiliser VBA pour calculer certains champs. Quand j'écris une macro, j'obtiens ceci:

ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-27]:R4C[-6],2012,RC[-27]:RC[-6])" 

Le problème est que la scope de la formule peut changer.

J'ai une variable NumOfMon qui count les colonnes requirejses pour la formule à partir de la première colonne de la feuille. La formule ci-dessus, cependant, utilise des décalages pour déterminer la plage requirejse, mais parce que ma gamme peut changer, j'ai besoin d'utiliser le NumOfMon pour utiliser uniquement les cellules requirejses. Comment puis-je changer la formule afin que je puisse l'utiliser correctement?

J'ai essayé d'utiliser des variables comme ceci:

 a = 28 NumofMon = 21 ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-(a-1)]:R4C[-(a-NumOfMon-1)],2012,RC[-(a-1)]:RC[-(a-NumOfMon-1)])" 

mais j'ai une erreur: "application définie ou erreur définie par l'object"

en gros

 ActiveCell.FormulaR1C1 = "=AVERAGEIF(R4C[-" & (a-1) & "]:R4C[-" & (a-NumOfMon-1) & "],2012,RC[-" & (a-1) & "]:RC[-" & (a-NumOfMon-1) & "])" 

Si cela est possible, transférez vos données dans une table. De cette façon, vous pouvez vous référer à des données dynamics (changer de taille) sans rencontrer de problèmes. Par exemple, pour se référer à la colonne A, appelée 'Item' dans un tableau appelé 'Table1', votre reference serait '= Table1 [Item]' Indépendamment des lignes.