Как найти номер последней строки в столбце VBA?

Я пытаюсь найти номер последней строки в столбце на конкретном листе VBA Excel. Номер строки необходимо поместить в переменную для дальнейшего использования. Заранее спасибо!

Dim i As Integer
Dim x As Integer
Dim lRow As Integer
Dim subj As String

subj = TextBox1.Text
lRow = ThisWorkbook.Sheets("Data").Range("A").Rows.Lastrow

ThisWorkbook.Sheets("Data").Cells(lRow, 1) = subj

For i = 1 To 1000

    If ThisWorkbook.Sheets("Data").Cells(1, i) = ThisWorkbook.Sheets(subj).Cells(1, 1) Then

    End If

Next i

Это вряд ли будет рассмотрено здесь в ответе в качестве хорошей детали, как и должно, если только это не вики сообщества, ИМХО. См. Следующий пример того, почему все зависит от ваших данных: rondebruin.nl/win/s9/win005.htm Тем не менее, следует упомянуть, что не используйте Integer с последней строкой, так как вы рискуете переполниться. Используйте Long.

QHarr 20.04.2018 07:17
Integers в любом случае хранятся как Long, но у них все еще есть ограничения. Так что используйте Long все время.
Michał Turczyn 20.04.2018 07:19

И подробнее ...... stackoverflow.com/questions/26717148/integer-vs-lo нг-путаница

QHarr 20.04.2018 07:27

Возможный дубликат Ошибка поиска последней использованной ячейки в VBA

AntiDrondert 20.04.2018 08:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
8 160
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если нет пробелов в данных, то

lRow = ThisWorkbook.Sheets("Data").Range("A1").end(xldown).row

В противном случае, если есть пробелы, и вы хотите абсолютное последнее, тогда

lRow = ThisWorkbook.Sheets("Data").Range("A1048576").end(xlup).row
Ответ принят как подходящий

Постараюсь уточнить уже данный ответ.

Чтобы найти последнюю строку / столбец, есть метод End объекта Range. Т.е. если у вас есть Cells(row, column), вы можете добавить к нему .End(), который может иметь четыре аргумента: xlUp, xlDown, xlToLeft, xlToRight. Эта функция возвращает ячейку (то есть объект Range), поэтому для получения номера строки / столбца вам необходимо получить доступ к свойству Row / Column. Подводя итог, вы должны использовать:

Cells(row, column).End(X).Row
Cells(row, column).End(X).Column

где row, column - целые числа, а X - один из упомянутых параметров.

Чтобы найти последнюю строку, вы должны использовать определенный номер столбца (для столбца, который вы хотите узнать последнюю строку). У вас есть два варианта:

  1. xlDown - вы можете думать об этом так: начать с заданной ячейки, затем идти вниз, пока не встретится первая пустая ячейка. Вернуть последнюю непустую ячейку.

  2. xlUp - начать с данной ячейки, затем идти до тех пор, пока не встретится непустая ячейка.

Примечание:, если вы начинаете с пустой ячейки, метод End вернет первую непустую ячейку. С другой стороны, если вы начнете с непустой ячейки, метод End будет работать до тех пор, пока не встретится первая пустая ячейка, и вернет последнюю непустую ячейку.

Все это звучит сложно, но позвольте мне привести несколько примеров:

давай лист:

  A
1 1
2 2
3
4 4
5 5

тогда

MsgBox Cells(1, 1).End(xlDown).Row 'returns 2
MsgBox Cells(5, 1).End(xlUp).Row 'returns 4
'start with cell in last row
MsgBox Cells(Rows.Count, 1).End(xlUp).Row 'returns 5

Другие вопросы по теме