2017-02-11 2 views
1

Si ont une petite plage contenant un tableau de formule relativement long (voir ci-dessous). Lorsque je calcule la plage avec application.calculate ou l'une de ses variantes les valeurs ne sont pas calculées (rien n'est renvoyé) mais lorsque je rends les cellules "sales" et que j'appuie sur [F9], les valeurs sont calculées et affichées.Excel VBA application.calculate et ses variations ne calculent pas les tableaux de formules mais la touche F9 fait

Y at-il un moyen de faire application.calculate ou l'une de ses variations imiter exactement [F9]?

Formule Tableau:

=IFNA(INDEX(INDEX(rangename_003,,COLUMN(rangename_004)),MATCH(ROW(rangename_004),IF(INDEX(rangename_003,,COLUMN(rangename_004))="",-1,COUNTIF(INDEX(rangename_003,,COLUMN(rangename_004)),"<"&INDEX(rangename_003,,COLUMN(rangename_004)))+1),0)),"")

+0

@charleswilliams un pour – brettdj

Répondre

1

En supposant que vous avez un objet de plage faisant référence à la formule de tableau, alors
Si vous êtes en mode manuel de calcul essayer

theRange.CurrentArray.Calculate 

Si vous êtes en mode automatique essayer

theRange.CurrentArray.Dirty 
theRange.CurrentArray.Calculate 
+0

Aucun des éléments [rangename] .calculate ou application.calculate. La touche [F9] fonctionne parfaitement bien. Même après que les calculs ont été effectués avec [F9] et que le code application.calculate a été exécuté, les valeurs disparaissent à nouveau. – m8rc28

+0

Fonctionne bien pour moi: quel est le refersto de rangename_003 et rangename_004, et quelle est l'adresse de la cellule de la formule de tableau? –

+0

Par exemple: rangename_004 est "A1: E5" et ne contient aucune donnée. Il est uniquement utilisé pour récupérer les numéros de colonne et de ligne relatifs, nom_de_la_003 est "G10: K14" et contient les données à trier. La plage de formule est "M10: Q14". – m8rc28