Ce qu'il faut comprendre, c'est que le caractère absolu des références absolues, tel qu'il est spécifié par l'attribut $
n'est pas absolument absolu ;-)
Maintenant que ce virelangue a disparu, laissez-moi vous expliquer.
Le caractère absolu ne s'applique que lors du copier-coller ou du remplissage de la formule. L'insertion de lignes au-dessus, ou de colonnes à gauche, d'une plage référencée de manière absolue "décalera" l'adresse de la plage de sorte que la formule données l'étendue vers laquelle il pointe reste la même.
En outre, l'insertion de lignes ou de colonnes dans le fichier milieu de la plage l'élargira pour englober les nouvelles lignes/colonnes. Ainsi, pour "ajouter" une ligne de données à une plage (tableau), vous devez l'insérer dans le tableau. après la première ligne de données.
La façon la plus simple de permettre l'ajout d'une ligne de données sobre la plage de données actuelle doit toujours avoir une ligne d'en-tête, et inclure la ligne d'en-tête dans la plage réelle. C'est exactement la solution proposée par cybernetic.nomad dans ce commentaire .
Mais il reste encore un problème à résoudre, à savoir l'ajout d'une rangée de données après l'élément d'information de l'utilisateur. fin de la table. Il ne suffit pas de taper les nouvelles données dans la ligne qui suit la dernière ligne de données. Pas plus que l'insertion d'une ligne avant la ligne après la dernière ligne.
La solution la plus simple est d'utiliser une "dernière" ligne spéciale, d'inclure cette ligne dans la plage de données et de toujours ajouter de nouvelles lignes en insérant l'option avant cette rangée spéciale.
En général, je réduis la hauteur des lignes et je remplis les cellules avec une couleur appropriée :
Pour votre exemple, la formule complète la plus "simple" serait donc la suivante :
=SUMIF(JUN!$G$1:$G$501,"Utilities",JUN!$H$1:$H$501)
Une autre façon d'atteindre le même objectif consiste à utiliser une formule dynamique qui s'adapte automatiquement à la quantité de données du tableau. Il existe plusieurs variantes de cette méthode, en fonction des circonstances exactes et de ce que l'on souhaite précisément faire subir au tableau.
Si, comme c'est généralement le cas (dans votre exemple, par exemple), le tableau commence en haut de la feuille de calcul, a un en-tête d'une ligne et les données sont contiguës sans aucun vide, une formule dynamique simple serait la suivante :
=SUMIF(INDEX(JUN!$G:$G,2):INDEX(JUN!$G:$G,COUNTA(JUN!$G:$G)),"Utilities",INDEX(JUN!$H:$H,2):INDEX(JUN!$H:$H,COUNTA(JUN!$G:$G)))
C'est une meilleure solution que d'utiliser INDIRECT()
comme
- Il est non-volatile et donc la feuille de calcul calcule plus rapidement, et
- Il n'y aura pas de rupture si vous insérez des colonnes à gauche du tableau.
La technique de la formule dynamique peut être encore améliorée en l'utilisant dans un système de gestion de la qualité. Formule nommée .
Bien sûr, le meilleur La solution consiste à convertir le tableau en un véritable tableau et utiliser références structurées .