Excel VBA Trouver la dernière ligne de plage
im ayant un peu de mal à trouver la dernière ligne.
Ce que je suis en train de faire est de trouver la dernière ligne de la colonne "A", puis l'utiliser pour trouver la dernière rangée à l'intérieur d'une plage.
Exemple de Données:
1) LR_wbSelect = wbshtSelect.cells(Rows.count, "A").End(xlUp).Row - 22
2) LR_wbSelectNew = wbshtSelect.cells(LR_wbSelect, "A").End(xlUp).Row
Je suis l'aide de la dernière ligne de la colonne "A" que les données de la ligne 29 aura toujours de la même longueur, les lignes utilisées dans la colonne "B" à partir de la ligne 29 peut être un nombre variable de lignes.
Donc je suis en train d'utiliser LR_wbSelect
dans la colonne "A" pour obtenir mon départ de la dernière Ligne, puis dans LR_wbSelectNew
en l'utilisant comme point de départ pour chercher des à partir.
Cela fonctionne lorsque la colonne, j'ai réglé sur "A", LR_wbSelectNew
me donne la ligne de "17", mais lorsque je change la colonne dans LR_wbSelectNew
à "B", il ne marche pas donner la bonne dernière ligne de "18".
Je peux changer la colonne "C,D,E,F" et le code fonctionne très bien, mais la seule colonne que je peux utiliser est "B" parce qu'il va toujours avoir des données en elle, où le reste de cette ligne pourrait avoir une cellule vide.
Après avoir fait quelques tests sur la feuille, en appuyant sur CTRL & de la lastring point de LR_wbSelect
la colonne "B" ignore les données dans les lignes et aller à la ligne où trouver des données. Je ne vois pas la raison pourquoi excel ne pense qu'il y a des données dans ces cellules??
J'espère avoir expliqué que vous pouvez suivre, si non, merci de demander.
Si besoin je peux télécharger le code complet si nécessaire, faites le moi savoir.
Toute aide serait appréciée.
- vous pouvez essayer de trouver l'
Max
lastrow dans les deux colonnes A et B. - Merci pour la réponse, j'ai essayé de mon option avec un mannequin ensemble de données dans un classeur différent, ce qui me donne des résultats corrects j'ai besoin, mais quand j'ai essayer de l'utiliser dans le bon document ne veut toujours pas fonctionner. Je mettrai à jour la question afin de mieux montrer le problème.
- toujours pas sûr de ce qui est le résultat que vous essayez d'atteindre ? Vous voulez lire à la dernière ligne Dans la Colonne B avant le 10 lignes vides (ce qui signifie ligne 18) ? ou vous voulez obtenir en ligne le 31 ? (dernière ligne de données dans la Colonne B) ?
- je veux obtenir la dernière ligne de la colonne B et obtenir la ligne 18 en conséquence. J'ai constaté que lors de l'appui sur ctrl et la flèche vers le haut dans la colonne de il saute le peuplées, les cellules de la colonne et le prend en haut de la page.
- voir ma réponse ci-dessous et laissez-moi savoir si c'est ce que vous vouliez dire
- toutes mes excuses, il s'avère excel pense que les cellules qui ont des formules, mais non l'affichage d'une valeur sont remplies, de sorte qu'il saute au-dessus d'eux, est-il un moyen de résoudre ce problème?
- essayez mon code modifié, ajouté une section sur mon code sous
******Edit 1******
- il ignore les cellules qui ont des formules à l'intérieur
Vous devez vous connecter pour publier un commentaire.
Il y a plusieurs résultats et méthodes lors de la recherche de la LastRow (dans la Colonne B).
Lors de l'utilisation de
Cells(.Rows.Count, "B").End(xlUp).Row
, vous obtiendrez la dernière ligne avec les données de la Colonne B (il ignore les lignes avec des espaces, et va tout le chemin vers le bas).Lors de l'utilisation:
Vous êtes à la recherche pour la dernière ligne avec les données de la Colonne B de la
CurrentRegion
, qui commence à partir de la cellule B10, jusqu'à la première ligne de données (il s'arrête sur la première ligne avec ligne vide).Code Complet:
Edit1: recherche de code pour la dernière rangée de cellules avec des valeurs (il ignore les cellules vides avec des formules à l'intérieur).
Espère que ce morceau de code permet de !
Si votre wbshtSelect est défini en tant que feuille de calcul et que vous avez utilisés ensemble pour définir la feuille de calcul spécifique, vous pouvez utiliser cette.
De prendre un coup d'oeil ici http://www.ozgrid.com/VBA/ExcelRanges.htm
Pourquoi êtes-vous à l'aide de "LR_wbSelect" comme la ligne contre? Si vous voulez connaître la dernière ligne de la colonne "B", vous devez utiliser les Lignes.le comte
Lignes.le comte --> Retourne le nombre maximal de lignes (ce qui est 1048576 pour Excel 2007 et plus)
End(xlUp) --> Déplace le pointeur vers le haut pour la dernière ligne
Donc,
les cellules(les Lignes.le comte, "Un").End(xlUp).Ligne --> Cela déplace le pointeur à la dernière ligne si la colonne " A " (comme si vous appuyant sur Ctrl+les touches Haut quand A1048576 cellule est sélectionnée)
Ainsi, l'utilisation de Lignes.le comte de sélectionner la dernière ligne de la colonne " B " ainsi. Si vous avez une exigence particulière relative à LR_wbSelect, veuillez le mentionner.
Alternativement, si vous voulez connaître la dernière ligne utilisée dans une feuille de calcul, vous pouvez utiliser le ci-dessous:
Je suis venu ici à la recherche d'un moyen de trouver la dernière ligne d'une non contigus gamme. La plupart des réponses ici seulement de vérifier une seule colonne à la fois, alors j'ai créé quelques fonctions différentes pour résoudre ce problème. Je dois admettre, cependant, que Shai Rado réponse est essentiellement le même que celui de mon
.Find()
mise en œuvre.Mise en œuvre 1 - Utilise
Range().End(xlUp)
sur chaque colonneMise en œuvre 2 - Utilise
Range().Find()
dans l'ordre inverseMise en œuvre de 3 Boucles à travers un Tableau dans l'ordre inverse
Je n'ai pas testé lequel de ces mises en œuvres les plus rapides sur de grands ensembles de données, mais j'imagine que le gagnant serait
_Array
puisqu'il n'est pas une boucle dans chaque cellule de la feuille de manière individuelle, mais plutôt des boucles à travers les données stockées dans la mémoire. Cependant, j'ai inclus tous les 3 pour la variété 🙂Comment utiliser
Pour utiliser ces fonctions, vous les déposez dans votre feuille de code/module de spécifier une plage comme de leurs paramètres, puis ils seront de retour le "plus" rempli de lignes à l'intérieur de cette gamme.
Voici comment vous pouvez utiliser n'importe quel d'entre eux pour résoudre le problème initial qui a été posée:
Chacun de ces sera de retour
18
.CurrentRegion
parce que beaucoup de fois que je peut utiliser cette fonction, il y a des lacunes dans les données, qui causeCurrentRegion
de donner des réponses incorrectesRange().End
vous amènera à la fin d'un bloc de code. Si la cellule de départ est vide, il vous apporte le la première a utilisé des cellules ou la dernière cellule. Il les cellules n'est pas vide, il vous amène à la dernière cellule. Pour cette raison, vous avez besoin de tester si oui ou non la cellule de la colonne B est de déterminer si l'utilisation deLR_wbSelectNew
dans la dernière ligne.Ce code définit une Cible de gamme qui s'étend de l'A1, à la dernière ligne de la colonne a - 22 et s'étend sur 10 colonnes.
Le problème avec le fait d'essayer de faire, c'est que si une cellule contient une formule, excel pense que c'est peuplée, même si la formule est de retour d'un vide.
Shai Rado première solution est un grand, mais pour certains, il pourrait avoir besoin d'un peu plus d'élaboration:
Si vous voulez savoir, la dernière ligne de la feuille de calcul entière:
Si vous trouvez cela utile, veuillez upvote sa réponse.