Это дополнительный вопрос к этому.

Следующая формула может быть использована для поиска значения последней непустой ячейки в столбце в Microsoft Excel:

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

У меня вопрос, как я могу преобразовать эту формулу в функцию Macro? Так что я могу использовать это так:

=GetLastValueInColumn('A')

Действительно, мне нужно преобразовать букву «А» в диапазон А: А, но не знаю как.

3 ответа3

1

Либо просто используйте формулу листа в вашем макросе, то есть

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

Или используйте некоторые специфичные для VBA методы, пара подробно описана в этом ответе на StackOverflow.

0

Как писал Эйрикдауде, есть много способов выполнить вашу основную задачу в VBA.

Чтобы выполнить преобразование строки в объект диапазона, ссылающийся на весь столбец, вы можете использовать что-то вроде:

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

Это будет работать (установите R в желаемый столбец) при условии, что COL является действительной буквой или номером столбца. Но это вызовет ошибку времени выполнения, если, например, COL является объектом диапазона или недействительной ссылкой на столбец. Поэтому, в зависимости от вашего приложения, вам может потребоваться выполнить проверку на наличие ошибок.

0

Попробуйте это:

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

и используйте это так:

НОТА:

это в желаемом формате:

=GetLastValue(A:A)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .