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.