Comment utiliser ARRAYFORMULA et SUM ensemble pour obtenir une colonne avec la somme des colonnes précédentes?

11

Dans Google Sheets, j'ai les données suivantes:

    |   A |  B  |  C  |  ...  | N  | TOTALS       |
  1 |  123|  425|  324|  ...  | 234| =SUM(A1:N1)  |
  2 |  123|  425|  324|  ...  | 234| =SUM(A2:N2)  |
  3 |  123|  425|  324|  ...  | 234| =SUM(A3:N3)  |

Comment créer la TOTALScolonne avec ARRAYFORMULA?

ARRAYFORMULA(SUM(A1:C99)) donnera un seul numéro, la somme de toutes les cellules - ce n'est pas ce que je veux.

Yisrael Dov
la source

Réponses:

8

Utilisez la formule suivante pour ce faire.

Formule

=MMULT(B2:E4,TRANSPOSE(ARRAYFORMULA(COLUMN(B2:E4)^0)))

Expliqué

Le ARRAYFORMULAest destiné à renvoyer la plage complète, telle que définie par la COLUMNformule. Le ^0 (power of zero)retourne toujours 1. Par conséquent, chaque résultat est multiplié par 1 (donnant la même valeur) et additionné.

Exemple

J'ai créé un exemple de fichier pour vous: SUM OVER ROWS

Jacob Jan Tuinstra
la source
2
@YisraelDov, n'oubliez pas de marquer la réponse comme acceptée si c'est ce que vous cherchiez.
Alex
Ceci est une réponse remarquable.
Michael Litvin
Une idée sur la façon de le faire fonctionner avec des cellules vides? (à traiter comme 0)
Michael Litvin
2
@MichaelLitvin: essayez ceci: =ARRAYFORMULA(SUMIF(IF(COLUMN(B1:E1),ROW(B2:E4)),ROW(B2:E4),B2:E4)). ht à @AdamL.
Jacob Jan Tuinstra
Pour gérer vide, une option consiste à utiliser à la indirectplace de la plage. Dans mon cas, j'ai utilisé ceciindirect("e3:y"&max(arrayformula((index(E3:Y,0,0)<>"")*row(E3:Y))))
BrunoLM
2

Que diriez-vous de sommer manuellement les colonnes:

=arrayformula(A:A + B:B + C:C)
skube
la source
Je ne peux pas être sûr que l'affiche signifiait Ncomme un espace réservé pour un nombre inconnu de colonnes ou si l'affiche signifiait vraiment la colonne N. Si le nombre de colonnes ne peut pas être déterminé à l'avance, alors nommer explicitement chaque colonne dans les formules n'est pas une option.
Kevin Li