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

19voto

Poul Points 191

Si la colonne s'est étendue uniquement par des dates ajoutées de manière contiguë comme dans mon cas - j'ai simplement utilisé la fonction MAX pour obtenir la dernière date.

La formule finale sera :

=DAYS360(A2; MAX(A2:A))

15voto

Mearg Points 74

Voici un autre :

=INDIRECT("A"&MAX(ARRAYFORMULA(IF(A:A<>"",LIGNE(A:A),""))))

Avec l'équation finale étant celle-ci :

=NB.JOURS360(A2,INDIRECT("A"&MAX(ARRAYFORMULA(IF(A:A<>"",LIGNE(A:A),"")))))

Les autres équations ici fonctionnent, mais j'aime celle-ci car elle facilite l'obtention du numéro de ligne, ce que je trouve que j'ai besoin de faire plus souvent. Juste le numéro de ligne serait comme ceci :

=MAX(ARRAYFORMULA(IF(A:A<>"",LIGNE(A:A),"")))

À l'origine, j'ai essayé de trouver juste cela pour résoudre un problème de feuille de calcul, mais je n'ai pas pu trouver quelque chose d'utile qui donnait simplement le numéro de ligne de la dernière entrée, donc j'espère que cela sera utile pour quelqu'un.

Aussi, cela a l'avantage supplémentaire qu'il fonctionne pour n'importe quel type de données dans n'importe quel ordre, et vous pouvez avoir des lignes vides entre les lignes avec du contenu, et il ne compte pas les cellules avec des formules qui évaluent à "". Il peut également gérer des valeurs répétées. Dans l'ensemble, c'est très similaire à l'équation qui utilise MAX((G:G<>"")*LIGNE(G:G)) ici, mais rend un peu plus facile l'extraction du numéro de ligne si c'est ce que vous cherchez.

Alternativement, si vous voulez mettre un script sur votre feuille, vous pouvez vous simplifier la tâche si vous prévoyez de le faire souvent. Voici ce script :

function lastRow(sheet,column) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  if (column == null) {
    if (sheet != null) {
       var sheet = ss.getSheetByName(sheet);
    } else {
      var sheet = ss.getActiveSheet();
    }
    return sheet.getLastRow();
  } else {
    var sheet = ss.getSheetByName(sheet);
    var lastRow = sheet.getLastRow();
    var array = sheet.getRange(column + 1 + ':' + column + lastRow).getValues();
    for (i=0;i

`

Ici, vous pouvez simplement taper ce qui suit si vous voulez la dernière ligne sur la même feuille que celle que vous éditez actuellement :

=DERNIÈRELIGNE()

ou si vous voulez la dernière ligne d'une colonne particulière de cette feuille, ou d'une colonne particulière d'une autre feuille, vous pouvez faire ce qui suit :

=DERNIÈRELIGNE("Feuille1","A")

Et pour la dernière ligne d'une feuille particulière en général :

=DERNIÈRELIGNE("Feuille1")

Ensuite, pour obtenir les données réelles, vous pouvez utiliser la fonction INDIRECT :

=INDIRECT("A"&DERNIÈRELIGNE())

ou vous pouvez modifier le script ci-dessus aux deux dernières lignes de retour (les deux dernières car vous devriez mettre à la fois la feuille et la colonne pour obtenir la valeur réelle d'une colonne), et remplacer la variable par ce qui suit :

return sheet.getRange(column + final).getValue();

et

return sheet.getRange(column + lastRow).getValue();

Un avantage de ce script est que vous pouvez choisir si vous voulez inclure des équations qui évaluent à "". Si aucun argument n'est ajouté, les équations évaluant à "" seront comptées, mais si vous spécifiez une feuille et une colonne, elles seront désormais comptées. De plus, il y a beaucoup de flexibilité si vous êtes prêt à utiliser des variations du script.

Probablement excessif, mais tout est possible.

`

1 votes

"La fonction LASTROW est inconnue"

0 votes

Devrait être +100 pour avoir réellement répondu à la question : Dernière ligne, pas de valeur dans la dernière ligne

0 votes

Merci! Cela m'a aidé à comprendre comment le faire fonctionner sur des données qui avaient une formule dans toutes les entrées en dessous de la dernière valeur que je voulais réellement trouver, donc elles n'étaient techniquement pas vides... mais cela a fonctionné. :)

12voto

Atul Points 1367

Cela fonctionne pour moi. Obtenir la dernière valeur de la colonne A dans Google sheet :

=index(A:A,max(row(A:A)*(A:A<>"")))

(Il saute également les lignes vides intermédiaires le cas échéant)

10voto

bloodymurderlive Points 145

Cela semble être la solution la plus simple que j'ai trouvée pour récupérer la dernière valeur dans une colonne en expansion constante :

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

1 votes

Cela fonctionne très bien et est extrêmement propre, mais si vous voulez la dernière cellule non vide dans une ligne qui peut contenir un nombre inconnu de cellules vides, alors vous avez besoin de la réponse d'Atul (stackoverflow.com/a/59751284/633921)

6voto

Andrew Anderson Points 395

Que diriez-vous de cette formule pour obtenir la dernière valeur :

=index(G:G;max((G:G<>"")*ligne(G:G)))

Et voici la formule finale pour votre tâche initiale :

=DAYS360(G10;index(G:G;max((G:G<>"")*ligne(G:G))))

Supposons que votre date initiale soit en G10.

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