Dans Excel, comment puis-je additionner tous les nombres au-dessus de la cellule actuelle?

31

Je veux avoir une colonne dans Excel qui se compose d'un en-tête, d'un tas de nombres, puis avoir la somme de ces nombres en bas. J'aimerais que la somme s'adapte à l'insertion de nouveaux numéros au-dessus du total. Quelque chose comme ça:

Numbers
 1
 2
 5
10

18        Total

Si j'insère plus tard 10 nouveaux numéros au milieu de la liste, je veux que la somme les inclue automatiquement.

Je sais que la SUM()fonction peut additionner une colonne entière, mais si le total est également dans cette colonne, alors elle se plaint d'une référence circulaire. Comment puis-je simplement additionner les nombres au-dessus du total?

Mark Meuer
la source

Réponses:

51

Les fonctions ROW()et COLUMN()donneront la ligne et la colonne de la cellule actuelle. Utilisez-les dans la ADDRESS()fonction pour créer une chaîne représentant la plage allant du haut de la colonne actuelle à la ligne au-dessus du total. Utilisez ensuite la INDIRECT()fonction pour transformer cette chaîne en une plage réelle à donner à la SUM()fonction. La formule de la cellule totale serait alors:

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))

Mettez cela dans n'importe quelle cellule d'une feuille de calcul et cela produira la somme de tous les nombres dans la colonne au-dessus de cette cellule.

Mark Meuer
la source
1
@ user370646 En fait, je viens de le tester avec Excel 2010 en utilisant plusieurs types de formules dans différentes cellules ajoutées et cela a fonctionné correctement. (Il échoue avec une erreur de référence circulaire si les cellules ajoutées contiennent une formule qui fait référence à la cellule avec la somme.) Avez-vous des exemples spécifiques?
Mark Meuer
1
+1 fois par million. Cela fonctionne dans Google Sheets où les plages de fonctions de somme -DON'T- sont automatiquement mises à jour. Merci beaucoup.
seekerOfKnowledge
1
Je viens de tester dans Google Sheets et la combinaison de fonctions fonctionne parfaitement.
Dim
1
Cette réponse m'a sauvé la vie!
kRazzy R
1
Semble également fonctionner dans LibreOffice Calc.
Dejan
6

En fait, vous pouvez faire ce que vous voulez simplement =SUM()

En supposant que votre feuille Excel a la conception suivante:

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|

Assumng A7est =SUM(A1:A5), vous pouvez ajouter plus de lignes à votre guise, car Excel étendra la =SUMgamme de 'en conséquence.

Supposons maintenant que je sélectionne les lignes 2, 3 et 4 et que j'insère des lignes. Le résultat sera le suivant:

 \|  A  |  B  |
--+-----+-----+
 1|  1  |     |
 2|     |     |
 3|     |     |
 4|     |     |
 5|  2  |     |
 6|  3  |     |
 7|  4  |     |
 8|  5  |     |
 9|     |     |
10|  15 |Total|

A10est égal =SUM(A1:A8). En tant que tel, vous pouvez maintenant insérer de nouveaux numéros à volonté.

Doktoro Reichard
la source
1
Maintenant que vous l'avez expliqué, je connaissais ce comportement. Mais pour une raison quelconque, je pensais que ce serait pratique d'avoir juste une formule qui résumerait toujours juste au-dessus de la cellule actuelle. Mais il est évidemment plus facile de créer la plage de somme simple que la formule complexe que j'ai trouvée. J'étais trop intelligent de moitié. Merci! (Je vais devoir me consoler que j'ai au moins appris sur INDIRECT et ADDRESS, que je n'avais pas utilisé auparavant.)
Mark Meuer
2
J'ai changé la réponse acceptée en celle que j'ai publiée car celle-ci continue de recevoir des votes plus d'un an plus tard, fait le travail que j'ai demandé dans la question et fonctionne apparemment dans les feuilles de calcul Google où cette réponse ne fonctionne pas. Mais, @Doktoro, votre réponse a fourni des informations très utiles et je vous en suis reconnaissant.
Mark Meuer
1
Il y a un défaut: insérez une ligne à la fin (avant la ligne vide). Au moins dans LibreOffice, cela laissera la formule SUM avec sa plage d'origine, c'est-à-dire en omettant la nouvelle ligne. Ma solution: SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1)). Parce qu'il se réfère à lui-même et non à une ligne au-dessus, il ajustera toujours la plage correctement.
Tilman Vogel
Le @TilmanVogel devrait être une réponse! Merci beaucoup
Genarito
5

Cette réponse est spécifique à Libra Office mais devrait également fonctionner pour Excel.

Fondamentalement, si nous voulons mentionner explicitement la ligne / colonne à geler, nous devons mentionner le $ avec cette ligne / colonne.

* Il existe également un algo intégré tel que lorsque vous copiez la formule dans d'autres cellules, Libra Office détermine automatiquement comment il doit modifier les valeurs de la formule.

Supposons donc que vous devez ajouter toutes les lignes G1: GN => où N est le numéro de ligne actuel. Pour cela, vous souhaitez corriger la ligne de la première valeur et conserver les autres valeurs sous. La formule sera donc:

= SUM (G $ 1: G1) -> pour la 1ère ligne et vous pouvez ensuite copier-coller la formule dans d'autres cellules.

Libra Office gardera automatiquement G1 comme première valeur et changera dynamiquement la 2e valeur en G2, G3 et ainsi de suite pour chaque cellule.

Prateek
la source
Selon la réponse d'Apostolos55> = Sum ($ A1: A1) <, cela ne fonctionnerait pas car seule la colonne A sera fixée tandis que Row variera quand la formule sera copiée dans d'autres cellules de la même colonne. Ainsi, le $ doit être ajouté avant la ligne pour obtenir les valeurs correctes dans la formule. De plus, cela n'expliquait pas ce que pouvaient être d'autres combinaisons, j'ai donc fourni l'alternative. Le $ doit être appliqué à la fois sur la ligne et la colonne si la cellule doit être maintenue constante.
Prateek
3

ok, Indirect () est volatile ... donc à mesure que votre feuille grandit, elle ne fera que ralentir. Si cela vous convient, vous feriez mieux d'utiliser:

=Sum($A1:A1)

lorsque vous faites glisser cette formule vers le bas, vous aurez toujours une plage de A1 jusqu'à la cellule actuelle (ou précédente, etc.). Pas volatile, très rapide, beaucoup plus simple!

Apostolos55
la source
Merci pour la réponse. Aidez-moi à comprendre, en quoi votre réponse est-elle différente de celle de @Doktoro Reichard?
Mark Meuer
C'est la somme qui peut "suivre" à côté de vos cellules, disons dans la colonne suivante. Ensuite, avec un IF, vous ne pouvez afficher / calculer que la dernière somme. Probablement pas ce que vous cherchez mais bon à savoir.
Apostolos55
Merci pour l'information. Vous avez raison, cela ne résout pas le problème de la question d'origine (qui recherche spécifiquement une formule pour additionner le nombre au - dessus de la cellule) mais peut être utile dans d'autres situations.
Mark Meuer