Te envío diversas opciones.
Para hallar la ultima celda desde Excel coloca en una celda diferente al rango A10:A1000 las siguientes formulas:
1. Si la columna tiene solo números
Opcion 1: =SI(CONTAR(A10:A1000)>0;COINCIDIR(9E+307;A:A))
Opción 2: =ELEGIR(1+(CONTAR(A10:A1000)>0);;COINCIDIR(9E+307;A:A))
2. Si la columna tiene texto
Opción 1: =SI(CONTAR.SI(A10:A1000;"*")>0;COINCIDIR(REPETIR("z";255);A:A))
Opción 2: =ELEGIR(1+(CONTAR.SI(A10:A1000;"*")>0);;COINCIDIR(REPETIR("z";255);A:A))
3. Si la columna tiene números y texto:
Opción 1:=MAX(SI(CONTAR(A10:A1000)>0;COINCIDIR(9E+307;A:A));SI(CONTAR.SI(A10:A1000;"*")>0;COINCIDIR(REPETIR("z";255);A:A)))
Opción 2: =MAX(ELEGIR(1+(CONTAR(A10:A1000)>0);;COINCIDIR(9E+307;A:A));ELEGIR(1+(CONTAR.SI(A10:A1000;"*")>0);;COINCIDIR(REPETIR("z";255);A:A)))
Para hallar la primera celda desde Excel coloca en una celda diferente al rango A10:A1000 las siguientes formulas:
1. Si la columna tiene solo números
Opción 1: = Creo que es mejor por código.
2. Si la columna tiene texto
Opción 1: =SI(CONTAR(A10:A1000)>0;COINCIDIR("*";A:A;0))
Ten presente que para las columnas B, C, D, etc, solo debes cambiar los rangos A10:A1000 en las formulas.
Ahora bien si deseas una función desde Visual, los códigos serian:
Function UltimaFila(Columna As String) As Variant
UltimaFila = Range(Columna & "1048576").End(xlUp).Row
End Function
Function PrimeraFila(Columna As String) As Variant
PrimeraFila = 1
For i = 10 To 1000
If Trim(Range(Columna & i)) <> "" Then
pfila = i
Exit For
End If
Next
PrimeraFila = pfila
End Function
'Para llamar las funciones
Sub EncontrarUltimas()
'Puedes cambiar la "A" por cualquier columna
Primera = PrimeraFila("A")
Ultima = UltimaFila("A")
End Sub
Espero te sirva
Un abrazo
Juan Carlos