192 votes

Obtenez la dernière cellule non vide dans une colonne dans Google Sheets

J'utilise la fonction suivante

=DAYS360(A2, A35)

pour calculer la différence entre deux dates dans ma colonne. Cependant, la colonne s'agrandit de plus en plus et je dois actuellement changer manuellement 'A35' à chaque mise à jour de ma feuille de calcul.

Existe-t-il un moyen (dans Google Sheets) de trouver la dernière cellule non vide de cette colonne et de définir dynamiquement ce paramètre dans la fonction ci-dessus?

2 votes

1voto

michaeldon Points 189

Cela donnera le contenu de la dernière cellule :

=indirect("A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>""))))

Cela donnera l'adresse de la dernière cellule :

"A"&max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

Cela donnera la ligne de la dernière cellule :

=max(ARRAYFORMULA(row(a:a)*--(a:a<>"")))

Peut-être préféreriez-vous un script. Ce script est beaucoup plus court que le long script posté ci-dessus par quelqu'un d'autre :

Allez dans l'éditeur de script et enregistrez ce script :

function getLastRow(range){
  while(range.length>0 && range[range.length-1][0]=='') range.pop();
  return range.length;
}

Une fois que cela est fait, il vous suffit d'entrer ceci dans une cellule :

=getLastRow(A:A)

0voto

Conrad Lindes Points 11

La façon dont un amateur le fait est "= CONCATENER ("A", COMPTER.UNIQUE(A1:A9999))", où A1 est la première cellule de la colonne, et A9999 est plus bas dans cette colonne que je n'espère jamais avoir d'entrées. Ce résultat A# peut être utilisé avec la fonction INDIRECT au besoin.

0 votes

Désolé. Cela ne fonctionne que si toutes les entrées dans la colonne sont uniques.

1 votes

Alors que j'apprécie votre contribution à StackOverflow, Conrad, votre réponse présente quelques problèmes. Tout d'abord, il n'a pas spécifié que les dates étaient uniques, donc vous devriez utiliser count(), au lieu de countunique(). Deuxièmement, utiliser indirect() et concaténer duplique la fonctionnalité existante de index(), comme vous pouvez le voir dans les autres réponses. Troisièmement, au lieu de A1:A9999, pourquoi ne pas simplement utiliser A1:A?

0voto

JohnA Points 593

Ben Collins est un gourou des feuilles Google, il a de nombreux conseils sur son site gratuitement et propose également des cours. Il a un article gratuit sur les plages dynamiques et j'ai utilisé cela comme base pour beaucoup de mes projets.

https://www.benlcollins.com/formula-examples/dynamic-named-ranges/

Avertissement, je n'ai rien à gagner en faisant référence au site de Ben.

Voici une capture d'écran de l'un de mes projets utilisant des plages dynamiques:

enter image description here

La cellule D3 a cette formule qui a été montrée ci-dessus sauf que c'est une formule de tableau :

=ArrayFormula(MAX(IF(L2s!A2:A1009<>"",ROW(2:1011))))

La cellule D4 a cette formule :

="L2s!A2:E"&D3

0voto

taylor.2317 Points 1

Cela peut fonctionner:

=DAYS360(A2;INDEX(A2:A;COUNTA(A2:A)))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X