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

224voto

Sam Plus Plus Points 961

Il peut y avoir une manière plus élégante, mais voici la méthode que j'ai trouvée :

La fonction pour trouver la dernière cellule remplie dans une colonne est :

=INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) )

Donc si vous le combinez avec votre fonction actuelle, cela ressemblerait à ceci :

=DAYS360(A2,INDEX( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ; ROWS( FILTER( A:A ; NOT( ISBLANK( A:A ) ) ) ))

5 votes

J'ai fini par comparer avec la chaîne vide plutôt que d'utiliser ISBLANK, qui traite certaines cellules qui semblent vides (par exemple, les formules qui renvoient des valeurs vides comme ="") comme non vides. Ainsi : '=index(filtre(A:A, A:A<>""), lignes(filtre(A:A, A:A<>"")))'

0 votes

J'ai également eu des problèmes avec la fonction ISBLANK à cause des formules. Mais en utilisant =INDEX( FILTRE( F3:F; F3:F<>"" ) ) ; LIGNES( FILTRE( F3:F; F3:F<>"" ) ) résulte en une erreur d'analyse de formule. Avez-vous une idée de ce qui ne va pas?

0 votes

Question. Si au lieu de A:A, il y a un importrange(), comment cela peut-il être réécrit sans faire la même importrange() 4 fois?

97voto

xxxbence Points 76

Pour trouver la dernière cellule non vide, vous pouvez utiliser les fonctions INDEX et MATCH de cette manière :

=DAYS360(A2; INDEX(A:A; MATCH(99^99;A:A; 1)))

Je pense que c'est un peu plus rapide et plus facile.

31 votes

Votre méthode semble ne trouver que la dernière cellule si la valeur est un nombre, ma méthode trouvera la dernière ligne si elle est également de type chaîne de caractères. La question initiale concernait les dates, donc cela fonctionnerait, mais étant donné que l'article attire toujours l'attention, il est intéressant de noter la différence. Tout dépend de vos besoins. Si vous avez juste besoin d'un nombre, je recommande cette méthode.

2 votes

Cela suppose que la colonne est triée

0 votes

Aussi pourrait être fait comme =DAYS360(A2;VLOOKUP(99^99;A:A;1))

68voto

Rubén Points 9760

Si A2:A contient des dates de manière contiguë, alors INDEX(A2:A, COUNT(A2:A)) renverra la dernière date. La formule finale est

=JOURS360(A2, INDEX(A2:A, COUNT(A2:A)))

5 votes

Ceci est la réponse la plus précise. Bien que la réponse de @Poul ci-dessus fonctionne pour ce cas, je voulais trouver la dernière cellule réelle avec des données et cela l'obtient que les données soient ordonnées ou non.

1 votes

Doux! simple et précisément ce que je cherchais.

0 votes

Ça ne marche pas pour moi... Il indique une erreur dans l'analyse de la formule

48voto

Eric Smalling Points 565

Mon préféré est :

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

Donc, pour les besoins de l'OP :

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

0 votes

... bien que celui-ci, "MAX", posté par Poul ci-dessus, soit plus propre lorsqu'il s'agit du cas où la dernière date est toujours la plus récente.

1 votes

Il voulait +1, pas ,1

1 votes

Cela ne répond pas à la question - il choisit la dernière valeur, mais pas la dernière valeur non vide.

44voto

Ramazan POLAT Points 475

Bien que la question soit déjà répondue, il y a une manière éloquente de le faire.

Utilisez simplement le nom de la colonne pour indiquer la dernière ligne non vide de cette colonne.

Par exemple:

Si vos données sont dans A1:A100 et que vous souhaitez pouvoir ajouter d'autres données à la colonne A, disons que cela pourrait être A1:A105 ou même A1:A1234 plus tard, vous pouvez utiliser cette plage:

A1:A

Exemple

Donc pour obtenir la dernière valeur non vide dans une plage, nous utiliserons 2 fonctions:

  • COUNTA
  • INDEX

La réponse est =INDEX(B3:B,COUNTA(B3:B)).

Voici l'explication:

COUNTA(plage): Renvoie le nombre de valeurs dans une plage, nous pouvons utiliser cela pour obtenir le nombre de lignes.

INDEX(plage, ligne, col): Renvoie le contenu d'une cellule, spécifiée par le décalage de la ligne et du colonne. Si la colonne est omise, la ligne entière est renvoyée.

Exemples:

INDEX(A1:C5,1,1) = A1
INDEX(A1:C5,1) = A1,B1,C1 # Ligne entière étant donné que la colonne n'est pas spécifiée
INDEX(A1:C5,1,2) = B1
INDEX(A1:C5,1,3) = C1
INDEX(A1:C5,2,1) = A2
INDEX(A1:C5,2,2) = B2
INDEX(A1:C5,2,3) = C2
INDEX(A1:C5,3,1) = A3
INDEX(A1:C5,3,2) = B3
INDEX(A1:C5,3,3) = C3

Pour l'image ci-dessus, notre plage sera B3:B. Nous compterons donc combien de valeurs il y a dans la plage B3:B en utilisant d'abord COUNTA(B3:B). Du côté gauche, il produira 8 car il y a 8 valeurs tandis qu'il produira 9 du côté droit. Nous savons également que la dernière valeur se trouve dans la 1ère colonne de la plage B3:B donc le paramètre col de INDEX doit être 1 et le paramètre ligne doit être COUNTA(B3:B).

PS: veuillez voter pour la réponse de @bloodymurderlive ici car il l'a écrite en premier, je l'explique juste ici.

1 votes

J'aime ça, mais j'ai vu des problèmes où parfois cela renvoie l'avant-dernier élément au lieu du dernier.

1 votes

@EricSmalling cela peut se produire car vous avez une ligne supplémentaire à la fin de toutes les lignes et lorsque vous copiez-collez, cela peut être considéré comme une cellule non vide. Avez-vous un exemple de feuille de calcul exposant ce problème ?

0 votes

Ça ne fonctionne pas. D'où viens la citation d'ailleurs? Je pensais que c'était de la documentation Google Sheet.

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