Cette solution prend donc une chaîne de caractères comme paramètre. Elle trouve combien de lignes il y a dans la feuille. Elle obtient toutes les valeurs de la colonne spécifiée. Elle boucle sur les valeurs de la fin au début jusqu'à ce qu'elle trouve une valeur qui n'est pas une chaîne vide. Enfin, elle récupère la valeur.
script :
function lastValue(column) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
return values[lastRow - 1];
}
Utilisation :
=lastValue("G")
EDIT :
En réponse au commentaire demandant que la fonction soit mise à jour automatiquement :
Le meilleur moyen que j'ai trouvé est d'utiliser ceci avec le code ci-dessus :
function onEdit(event) {
SpreadsheetApp.getActiveSheet().getRange("A1").setValue(lastValue("G"));
}
Il ne serait plus nécessaire d'utiliser la fonction dans une cellule telle que la cellule Utilisation la section des états. Au lieu de cela, vous devez coder en dur la cellule que vous souhaitez mettre à jour et la colonne que vous souhaitez suivre. Il est possible qu'il existe une manière plus éloquente de mettre en œuvre cette fonction (en espérant qu'elle ne soit pas codée en dur), mais c'est ce que j'ai trouvé de mieux pour le moment.
Notez que si vous utilisez la fonction dans une cellule comme indiqué précédemment, elle sera mise à jour lors du rechargement. Il existe peut-être un moyen de s'accrocher à onEdit()
et forcer dans les fonctions de la cellule pour mettre à jour. Je n'arrive pas à le trouver dans la documentation.