7
votes

Excellez les références de cellules fixes à la fin de la colonne?

J'ai besoin d'une formule Excel qui calcule la somme de toutes les cellules de colonne d'un niveau fixe jusqu'à la dernière cellule de la colonne. Comme: somme de S5 à la dernière cellule S.
J'ai essayé: somme (S5: s) mais ne fonctionne pas.

Il y a une cellule avec le nombre de lignes. Puis-je utiliser une variable dans la formule comme: somme (S5: S & A1) avec A1 contenant le nombre de lignes?


0 commentaires

3 Réponses :


10
votes

Vous pouvez essayer = somme (décalage (S5,0,0, lignes (s: s) -row (S5) +1))


4 commentaires

THX, mais ne fonctionne pas: / lignes (s: s) -row (S5) ne renvoie pas le nombre de lignes ...


L'expression lignes (s: s) -row (S5) +1 retournera le nombre de lignes de la cellule S5 à la dernière cellule de la colonne S (qui est ce que vous avez demandé à l'origine lorsque vous avez posté le fichier. question). Si vous souhaitez un nombre différent de lignes, remplacez simplement cette expression avec le numéro souhaité. Par exemple, si le numéro que vous voulez est dans la cellule A1, vous pouvez utiliser la formule = somme (décalage (S5,0,0, A1)) .


Thx Ça marche PS: devrait remplacer la virgule par Semicolon = somme (décalage (S5; 0; 0; 0; A1))


Que ce soit une virgule ou un point-virgule dépend de ce qui est spécifié comme le «séparateur de liste» par vos paramètres régionaux sous Windows (en supposant que vous utilisiez Windows). Le mien est une virgule. Le vôtre doit être un point-virgule. Désolé si la différence a conduit à la confusion.



2
votes

Pour résumer toutes les cellules d'A2 à la fin de la colonne A, vous pouvez utiliser

=SUM(A2,INDIRECT("A2:A" & ROWS(A:A)))


0 commentaires

0
votes

tl; dr : je vous recommande d'utiliser Namedrange s et = index (naméRange, ligne ()): index (Namedrange) (NameDrange)) < / code>. Cela se comporte bien lorsque les données d'entrée changent (taille et valeur) et lorsque la feuille de calcul change (plus / moins de colonnes / rangées). Vous pouvez utiliser cette construction comme entrée de n'importe quelle fonction qui prend un tableau en tant que paramètre, tel que xlookup () . .

Je cherchais juste aujourd'hui une solution pour cela, et j'ai proposé quelque chose basé sur index () et nommé gammes, que je pense que cela fonctionne mieux que indirect () < / code>. L'exercice est-ce:

partie 1 : créer un tableau d'entrée

  • Dans une nouvelle feuille, commencez par créer un tableau simple de chiffres. Allez à la cellule A1 et entrez = séquence (10) . Cela créera un tableau A1: A10 avec des nombres de 1 à 10.

    partie 2 : solution basée sur indirect ()

    • aller à la cellule B1 et entrez = indirect ("A" et ligne ()): indirect ("A" et comptage (A: A)) . .

    • Il y a deux parties à ceci: une avant le côlon, une autre après le côlon. Le résultat final que vous recherchez est A1: A10, correct?

    • la pièce avant que le côlon utilise une référence fixe à la lettre de colonne, "a" et la fonction ligne () fonction pour obtenir le numéro de la Rangée actuelle - juste pour que cette solution fonctionne si vos données ne démarrent pas sur la première ligne (juste un détail, vraiment). Le bit & , au cas où vous ne le connaissez pas, est utilisé pour concaténer des chaînes. À la fin, vous construisez la chaîne "A1" à partir de la lettre fixe "A" et quel que soit le numéro de ligne () . .

    • La partie après que le côlon est similaire mais que nous essayons maintenant d'obtenir le numéro de ligne du dernier élément de la matrice que nous traitons. Nous faisons cela en utilisant la fonction pasta () qui passe le tableau A: A comme entrée.

    • génial, vous devriez voir une copie du tableau d'entrée sur la colonne B. Pour tester, multipliez le tableau par 2. Allez à Cell C1 et entrez = indirect ("A" et ligne () ): Indirect ("A" & Counta (A: A)) * 2 . Maintenant, vous devriez voir que le tableau d'entrée a doublé.

      partie 3 : solution basée sur index ()

      • Cette solution nécessite une matrice nommée. Pour ce faire, sélectionnez Colonne A. La zone Nom (coin supérieur droit, proche des cellules, sous le ruban) montrera probablement A1. Cliquez là-bas et donnez un nom à la plage. Par exemple, numéros .

      • Allez maintenant à la cellule D1 et entrez = index (numéros, 1): index (numéros, notes (numéros)) . Vous obtiendrez encore une autre copie du tableau d'entrée.

      • Enfin, allez à la cellule E1 et entrez = index (numéros, 1): index (numéros, comptes (numéros)) * 2 . Encore un autre tableau doublé.

        partie 4 : tests

        • OK La première chose, les opérations dynamiques doivent bien se comporter lorsque des éléments sont ajoutés ou supprimés au tableau d'entrée. Allez à la cellule A1 et modifiez le paramètre Séquence () sur 5. Puis sur 20. Tous les autres tableaux des colonnes B à E doivent être redimensionnés automatiquement, ce qui montre les deux solutions fonctionnent.

        • Le test final: ajoutez une colonne avant A. Voyez ce qui se passe sur ce qui arrive maintenant des colonnes C et D.

          Yep, la solution basée sur indirecte ne se comporte pas bien si nous modifions la structure de la feuille de calcul. Il pourrait y avoir des moyens de résoudre ce problème que je n'ai pas encore exploré, mais pour l'instant, je vais rester à index et nommé gammes - qui, à la manière, semblent être une option plus propre et plus facile à maintenir. également. Si quelqu'un suggère un moyen de "corriger" la solution basée sur indirect () je peux éditer ceci.

          Plus d'informations sur les gammes nommées peuvent être trouvées ICI .


1 commentaires

Je voulais juste souligner que cela fonctionne également si vous supprimez la plage nommée, que ce soit la colonne ou uniquement le nom, et que vous l'ajoutez, que ce soit au même endroit ou sur une colonne différente - même sur une feuille différente!