La détermination de la dernière rangée dans une seule colonne
J'ai une feuille avec des données dans les cols A
par H
.
J'ai besoin pour déterminer la dernière ligne de la colonne A
qui contient des données (c'est contiguë - pas de lacunes dans les données/lignes).
Il est également données dans les autres colonnes qui ont plus lignes de données de la colonne A
, donc j'ai besoin d'isoler uniquement la colonne A
. (Et/ou tout simplement une fourchette à l'intérieur du col A
).
Je peux le faire sur la feuille de calcul en utilisant des
=COUNTA(A2:A100)
Toutefois, dans l'ensemble de mes recherches pour un Google Apps Script solution, tout me semble à trouver sont les exigences à remplir de multiples fonctions englobant des dizaines de lignes de code, y compris beaucoup de i++
des choses... que je pouvais faire moins complexe, par compensation directement à partir de A1
.
Est-il éventuellement une colonne spécifique au moyen de la modification de cette méthode?
var aLast = ss.getDataRange().getNumRows();
Si tortueuses processus est ce qui est nécessaire, alors ainsi soit-il. Mais je trouve qu'il est difficile d'imaginer (et encore plus difficile à trouver!) une solution plus simple.
Personne ne s'en soucie de m'éclairer (ou la fenêtre de ma bulle)?
Vous devez vous connecter pour publier un commentaire.
Comment au sujet de l'aide d'un JavaScript truc?
J'ai emprunté cette idée à partir de cette réponse. Le
Array.filtre()
méthode fonctionne sur leAvals
tableau, qui contient toutes les cellules de la colonne A. Par filtrage sur une fonction native du constructeur, nous revenons seul non-null éléments.Cela fonctionne pour une seule colonne; si la plage contient plusieurs colonnes,puis le résultat de
filter()
comprendra les cellules de toutes les colonnes, et donc être à l'extérieur de la peuplé dimensions de la gamme.var Alast = Avals.filter(String).length;
variable?Bien qu'il n'existe aucune formule compliquée, je pense, il ne nécessite pas des dizaines de lignes de code pour trouver la dernière ligne de la colonne A. Essayez cette simple fonction. L'utiliser dans une cellule de la façon normale vous souhaitez utiliser une autre fonction
=CountColA()
Vous pouvez le faire en allant dans le sens inverse.
À partir de la dernière ligne dans la feuille de calcul et en remontant jusqu'à une certaine valeur. Cela fonctionne dans tous les cas, même si vous avez quelques lignes vides entre les deux.
À quoi ressemble le Code ci-dessous:
Cette obtiendrez la dernière ligne dans une feuille de calcul en supposant basé sur la colonne A.
Cela résout @mrityunjay-pandey partiellement-réponse correcte.
D'étendre cette réponse pour obtenir la dernière rangée et de colonne, on peut utiliser:
Pour de très grandes feuilles de calcul, cette solution est très rapide:
J'ai utilisé getDataRegion
Notez que cela s'appuie sur les données contiguës (conformément à la demande du commettant).
Pour obtenir le nombre de colonnes ou de dernière colonne de l'index:
Pour obtenir le pas de lignes ou de dernière ligne de l'index:
où
Cela peut être une autre façon de faire le tour lastrow.
Vous pouvez avoir besoin de jouer avec le code pour l'adapter à vos besoins
personnellement j'ai eu un problème similaire et est allé avec quelque chose comme ceci:
Il semble pour le nombre de lignes dans le ws et boucle à travers chaque cellule de votre colonne. Quand il trouve une cellule non vide de la mise à jour de la position de la cellule dans le last_row_col variable. Il a l'avantage de vous permettre d'avoir des colonnes non contigües et toujours savoir la dernière ligne (en supposant que vous allez par le biais de l'ensemble de la colonne).
N'est jamais trop tard pour poster une alternative la réponse, je l'espère. Voici un extrait de mon Trouver la dernière Cellule. Je suis principalement intéressé par la vitesse. Sur une base de données que j'utilise avec près de 150 000 lignes cette fonction a (moyenne) 0.087 secondes pour trouver une solution par rapport à @Mogsdad élégant JS solution ci-dessus qui prend (en moyenne) de 0,53 s sur les mêmes données. Les deux tableaux ont été pré-chargé avant l'appel de la fonction. Il rend l'utilisation de la récursivité pour faire une recherche binaire. Pour les plus de 100 000 lignes, vous devriez trouver ce qu'il faut pas plus de 15 à 20 houblon pour retourner un résultat.
J'ai quitté le Journal des appels, donc vous pouvez le tester dans la console d'abord et voir son fonctionnement.
J'ai essayé d'écrire jusqu'à 3 fonctions suivantes, vous pouvez tester différents cas de la vôtre. C'est les données que j'ai testé avec:
Fonction getLastRow1 et getLastRow2 sera de retour à 0 de la colonne B
Fonction getLastRow3 sera de retour 1 pour la colonne B
Dépend de votre cas, vous pourrez les adapter à vos besoins.
Mise à jour de Mogsdad solution,
JS:
J'ai réécrit le getLastRow/getLastColumn fonctions de spécifier un index de ligne ou de colonne de l'index.
Voici une autre façon de résoudre cela. Il utilise un
while
boucle, mais prend en considération vide les écarts entre les lignes.Je suis en utilisant
getDataRange()
suivie pargetNumRows()
. La première fonctionet de la deuxième fonction
P. S j'espère que cela fonctionne pour tous les cas.
getDataRange
retourne un tableau rectangulaire.