2010-07-14 9 views
14

Je commence juste par "programmer" VBA sur Excel pour automatiser certains trucs manuels d'anoying ... donc ça va sonder comme une question de nooby totale, bien que je sois m pas très familier aux Objets VBA et ainsi de suite.Obtenir le nombre de cellules remplies dans une colonne (VBA)

Donc, ma réponse: Existe-t-il un moyen plus élégant de connaître la longueur d'une colonne? Ma première colonne est un index, avec des nombres monotones croissant, qui se termine à un point non prévisible. Maintenant, je veux savoir, combien d'entrées cette colonne a. Y a-t-il un meilleur moyen que d'itérer par là et de faire attention à une cellule vide?

Greetz, Poeschlorn

Répondre

12

La première consiste à: (Suppose colonne d'index commence à A1)

MsgBox Range("A1").End(xlDown).Row 

Ce qui est à la recherche de la 1ère cellule inoccupée vers le bas de A1 et de vous montrer son numéro de ligne ordinale .

Vous pouvez sélectionner la prochaine cellule vide avec:

Range("A1").End(xlDown).Offset(1, 0).Select 

Si vous avez besoin la fin d'un jeu de données (y compris les blancs), essayez: Range ("A: A"). SpecialCells (xlLastCell) .Row

+0

Il est préférable de le faire comme MrKowz ci-dessous illustre. Si pour une raison quelconque, il y a une rangée vide, vous risquez de manquer beaucoup de données. – Jon49

+0

Dans certains cas, cependant, cette question indique spécifiquement son pour les cellules remplies, et une erreur de calcul due à des cellules non contiguës peut être tout aussi mauvaise –

3

vous pouvez également utiliser

Cells.CurrentRegion 

pour vous donner une gamme représentant les limites de vos données sur la feuille active actuelle

Msdn dit sur le sujet

Renvoie un objet Range qui représente la région actuelle. La région actuelle est une plage délimitée par une combinaison de lignes vides et de colonnes vierges. Lecture seule.

Ensuite, vous pouvez déterminer le nombre de colonnes par

Cells.CurrentRegion.Columns.Count 

et le nombre de lignes par

Cells.CurrentRegion.Rows.Count 
3

Vous pouvez également utiliser:

UsedRange.Rows.Count 
+0

Cela a fonctionné parfaitement pour moi, merci. – DavidGuaita

15

Si vous voulez trouver la dernière cellule remplie dans une colonne particulière, la meilleure méthode est:

Range("A" & Rows.Count).End(xlUp).Row 

Ce code utilise la dernière cellule dans la colonne entière (65536 pour Excel 2003, 1.048.576 dans les versions ultérieures), puis trouver la première cellule peuplée au-dessus. Cela a la capacité d'ignorer les "pauses" dans vos données et de trouver la vraie dernière ligne.

2

Pour trouver la dernière colonne remplie utilisez ce qui suit:

lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
Questions connexes