48 votos

Cómo contar el número de filas en excel con los datos?

la columna tiene los datos de este tipo (es decir frecuente de celdas en blanco):

HEADING  <-- this is A1
kfdsl
fdjgnm
fdkj

gdfkj
4353

fdjk  <-- this is A9

Me gustaría ser capaz de obtener la referencia de celda de la última celda que tiene los datos. Así, en el ejemplo de arriba quiero volver: A9

He intentado hacer esto pero se detiene en la primera celda en blanco (es decir, volviendo A4)

numofrows = destsheet.Range("A2").End(xlDown).Row - 1

49voto

Tomamais Puntos 473

Me gusta esta manera:

ActiveSheet.UsedRange.Rows.Count

Se puede hacer lo mismo con las columnas de contar. Para mí, siempre funciona. Pero, si usted tiene los datos en otra de las columnas, el código anterior se considera demasiado, porque el código está buscando todo el rango de celdas en la hoja.

41voto

nixda Puntos 628

Opción más segura es

Lastrow =  Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Lastcol =  Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

No use UsedRange o SpecialCells(xlLastCell) o End(xlUp). Todos estos métodos pueden dar resultados equivocados si previamente se elimina algunas filas. Excel cuenta en estos invisible de las células.

Estos métodos funcionan de nuevo, si usted eliminar las células, guarde el libro, cerrar y volver a abrir.

26voto

Este trabajo, independiente de la versión de Excel (2003, 2007, 2010). La primera tiene 65536 filas en una hoja, mientras que las dos últimas tienen un millón de filas o así. Sheet1.Rows.Count devuelve este número depende de la versión.

numofrows = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row

Este búsquedas desde la parte inferior de la columna para la primera celda no vacía, y obtiene su número de fila.

Esto también funciona si tiene datos que ir más abajo en otras columnas. Así, por ejemplo, si usted toma sus datos de ejemplo y también escribir algo en la celda FY4763, lo anterior se sigue correctamente el retorno 9 (no 4763, que cualquier método que implica la UsedRange propiedad de devolver incorrectamente).

Tenga en cuenta que en realidad, si quieres la referencia de la celda, sólo debe utilizar la siguiente. Usted no tiene que obtener primero el número de la fila y, a continuación, construir la celda de referencia.

Set rngLastCell = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)

19voto

sven Puntos 155

Yo en comparación de todas las posibilidades con una larga hoja de prueba:

0,140625 sec para

lastrow = calcws.Cells.Find("*", [A1], , , xlByColumns, xlPrevious).row

0 seg., para

iLastRow = calcws.Cells(rows.count, "a").End(xlUp).row

y

numofrows = calcws.Cells.SpecialCells(xlLastCell).row

0,0078125 sec para

lastrow = calcws.UsedRange.rows.count
Do While 1
    If calcws.Cells(lastrow, 1).Value = "" Then
        lastrow = lastrow - 1
    Else
        Exit Do
    End If
Loop

Creo que los favoritos son obvias...

6voto

Lubor Puntos 59

Dim RowNumber As Integer
RowNumber = ActiveSheet.Range("A65536").End(xlUp).Row

En su caso debe devolver #9

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X