2010-07-14 73 views
14

Estoy empezando con la "programación" de VBA en Excel para automatizar algunas cosas manuales molestas ... así que esto sonará como una pregunta nooby total, aunque yo ' m no es muy familiar para VBA Objects, etc.Obteniendo el número de celdas llenas en una columna (VBA)

Así que mi pregunta: ¿Hay una forma más elegante de averiguar la longitud de una columna? Mi primera columna es un índice, con números cada vez más monótonos, que termina en un punto no predecible. Ahora quiero averiguar cuántas entradas tiene esta columna. ¿Hay una mejor manera de iterar a través de esto y tener cuidado con una celda vacía?

Greetz, Poeschlorn

Respuesta

12

Una forma es: (Asume columna de índice comienza en A1)

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

¿Qué está buscando la celda desocupada primero hacia abajo desde A1 y mostrando su número de fila ordinal .

Puede seleccionar la siguiente celda vacía con:

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

Si necesitas al final de un conjunto de datos (incluyendo espacios), trate de: Range ("A: A"). SpecialCells (xlLastCell) .Row

+0

Es mejor hacerlo como MrKowz a continuación ilustra. Si por alguna razón hay una fila vacía, puede perder una gran cantidad de datos. – Jon49

+0

En algunos casos, sin embargo, esta pregunta especifica que es para celdas llenas, y el recuento incorrecto debido a celdas no contiguas puede ser tan malo –

3

también puede utilizar

Cells.CurrentRegion 

para darle una serie que representa los límites de sus datos en la hoja activa actual

Msdn dice sobre el tema

Devuelve un objeto Range que representa la región actual. La región actual es un rango delimitado por cualquier combinación de filas en blanco y columnas en blanco. Solo lectura.

A continuación, se puede determinar el número de columnas a través de

Cells.CurrentRegion.Columns.Count 

y contar la fila a través de

Cells.CurrentRegion.Rows.Count 
3

También puede utilizar:

UsedRange.Rows.Count 
+0

Esto funcionó perfectamente para mí, gracias. – DavidGuaita

15

Si usted quiere encontrar la última celda poblada en una columna en particular, el mejor método es:

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

Este código utiliza la última celda en la columna completa (65536 para Excel 2003, 1.048.576 en versiones posteriores), y luego encontrar la primera celda poblada por encima de ella. Esto tiene la capacidad de ignorar "interrupciones" en sus datos y encontrar la última fila verdadera.

2

para encontrar la última columna llena utilice la siguiente:

lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column 
Cuestiones relacionadas