Подтвердить что ты не робот

Получение числа заполненных ячеек в столбце (VBA)

Я только начинаю с "программирования" VBA на Excel, чтобы автоматизировать некоторые ругательные материалы... так что это будет звучать как полный нубийский вопрос, хотя я не очень хорошо знаком с объектами VBA и т.д.

Итак, мое задание: Есть ли более элегантный способ узнать длину столбца? Моя первая колонка - это индекс с монотонно увеличивающимися числами, который заканчивается в не прогнозируемой точке. Теперь я хочу узнать, сколько записей в этой колонке. Есть ли лучший способ, чем повторять это и следить за пустой ячейкой?

Greetz, Poeschlorn

4b9b3361

Ответ 1

Один из способов: (Предположим, что индексный столбец начинается с A1)

MsgBox Range("A1").End(xlDown).Row

Что ищет 1-я незанятая ячейка вниз от A1 и показывает вам порядковый номер строки.

Вы можете выбрать следующую пустую ячейку с помощью:

Range("A1").End(xlDown).Offset(1, 0).Select

Если вам нужен конец набора данных (включая пробелы), попробуйте: Range ( "A: A" ). SpecialCells (xlLastCell).Row

Ответ 2

Если вы хотите найти последнюю заполненную ячейку в определенном столбце, лучший способ:

Range("A" & Rows.Count).End(xlUp).Row

В этом коде используется самая последняя ячейка во всем столбце (65536 для Excel 2003, 1048576 в более поздних версиях), а затем найдите первую заполненную ячейку над ней. Это позволяет игнорировать "перерывы" в ваших данных и найти истинную последнюю строку.

Ответ 3

Вы также можете использовать

Cells.CurrentRegion

чтобы дать вам диапазон, представляющий границы ваших данных на текущем активном листе

Msdn говорит по теме

Возвращает объект Range, который представляет текущий регион. Текущий регион - диапазон, ограниченный любой комбинацией пустых строк и пустых столбцов. Только для чтения.

Затем вы можете определить количество столбцов с помощью

Cells.CurrentRegion.Columns.Count

и количество строк через

Cells.CurrentRegion.Rows.Count

Ответ 4

Вы также можете использовать:

UsedRange.Rows.Count

Ответ 5

Чтобы найти последний заполненный столбец, используйте следующее:

lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column