Macro de Excel: Última celda no vacía en una columna


0

Esta es una pregunta de seguimiento para éste .

La siguiente fórmula se puede usar para encontrar el valor de la última celda no vacía en una columna, en Microsoft Excel:

=LOOKUP(2,1/(A:A<>""),A:A)

Mi pregunta es, ¿cómo puedo convertir esta fórmula a una función de macro? Para que pueda usarlo así:

=GetLastValueInColumn('A')

De hecho, necesito convertir la letra 'A' al rango A: A, pero no sé cómo.

Respuestas:


1

O simplemente use la fórmula de la hoja de trabajo en su macro también, es decir,

Function GetLastValueInColumn(r As Range) As Range
  GetLastValueInColumn = Application.WorksheetFunction.LOOKUP(2,1/(r<>""),r)
End Function

O use algunos métodos específicos de VBA, un par se detallan en esta respuesta en StackOverflow.


0

Como escribió eirikdaude, hay muchas maneras de realizar su tarea principal en VBA.

Para lograr la conversión de una cadena en un objeto de rango que se refiere a toda la columna, puede usar algo como:

Function LastValueInColumn(COL)
  Dim R as Range
  Set R = Cells(1,COL).EntireColumn

Esto funcionará (establezca R en la columna deseada) siempre que COL sea una letra o un número de columna válido. Pero causará un error de tiempo de ejecución si, por ejemplo, COL es un objeto de rango o una referencia de columna no válida. Por lo tanto, dependiendo de su aplicación, es posible que tenga que hacer alguna comprobación de errores.


0

Prueba esto:

Public Function GetLastValue(rIn As Range) As Variant
    Dim N as Long
    N = Cells(Rows.Count, rIn.Column).End(xlUp).Row
    GetLastValue = Cells(N, rIn.Column)
End Function

y úsalo así:

enter image description here

NOTA:

Esto está en el formato deseado:

=GetLastValue(A:A)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.