web-dev-qa-db-fra.com

Faire la somme des trois valeurs les plus importantes dans une colonne d'une feuille Google

J'ai une feuille Google avec un nombre variable de lignes de données. J'aimerais résumer les trois valeurs les plus élevées d'une certaine colonne, mais elles ne figureront pas nécessairement dans les trois premières cellules. Une cellule vide doit être traitée comme zéro, s'il n'y a qu'une ou deux lignes contenant des données jusqu'à présent.

Comment puis-je atteindre cet objectif? La chose la plus proche que je puisse penser est MAX(A1:A2000), mais elle n’obtient que la valeur la plus élevée, sans compter les deuxième et troisième plus hautes valeurs.

3
Pops

Formule

=ArrayFormula(SUM(IFERROR(LARGE(A1:A2000,{1,2,3}),0)))

Explication

  • LARGE renvoie le nième élément le plus important.
  • IFERROR si le premier argument renvoie une erreur, renvoie le second argument.
  • {1,2,3} est un tableau de littéraux. Voir tilisation de tableaux dans Google Sheets .
  • ArrayFormula fait que les fonctions telles que LARGE et IFERROR renvoient un tableau de valeurs.
4
Rubén

Vous voulez probablement regarder LARGE () .

Renvoie le nième élément le plus grand d'un ensemble de données, où n est défini par l'utilisateur.

La solution la plus simple, mais pas la plus élégante, que j'ai est la suivante:

=if(iserror(large({data},1)),0,large({data},1))+
if(iserror(large({data},2)),0,large({data},2))+
if(iserror(large({data},3)),0,large({data},3))

(retours chariot ajoutés pour plus de lisibilité)

Les if et iserror sont là pour renvoyer un 0 si la fonction génère une erreur. (Par exemple, s'il n'y a que deux valeurs dans vos données.)

Bien entendu, large({data},1) est fonctionnellement équivalent à max({data}), mais je l’ai laissé ainsi pour des raisons de cohérence.

3
ale