Выбор диапазона Excel VBA

У меня есть макрос, в котором мне нужно выбрать диапазон R2:last row in sheet . Однако последняя строка в моем листе может быть пустой в столбце R На данный момент я пользуюсь этим

 Dim t As Range Set t = Range("R2", Range("R1000").End(xlUp)) For Each Cell In t If IsEmpty(Cell) Then Cell.Activate ActiveCell.Value = "To Be Picked Up" End If Next 

Однако если последняя строка имеет пробел в столбце R то она игнорируется. Я надеюсь вывести диапазон, используя столбец A , поскольку в последней строке данных всегда есть столбец A Так что,

 Dim t As Range Set t = Range("R2", Range("A1000").End(xlUp).ActiveCell.Offset(0, 17)) For Each Cell In t If IsEmpty(Cell) Then Cell.Activate ActiveCell.Value = "To Be Picked Up" End If Next 

Кажется, это так просто, но я уверен, что им не хватает чего-то глупого. Любая помощь или альтернативные методы были бы полезны.

Это должно сделать трюк в одной строке:

 Sub SO() Range("R2:R" & Range("A" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks).Value = "To Be Picked Up" End Sub 

Но в ответ на ваш вопрос конкретно

 Set t = Range("R2:R" & Range("A" & Rows.Count).End(xlUp).Row) 

Метод Range() примет строку в качестве аргумента для получения диапазона. Поэтому мы можем построить эту строку любым способом:

 "A1000" '// A1000 "A" & 1000 '// A1000 "A" & "10" & "00" '// A1000 "A" & CStr(1001 - 1) '// A1000 
  • "A" & Rows.Count вернет A65536 или A1048576 зависимости от типа рабочего листа.

  • Range("A1048576").End(xlUp) как вы знаете, будет извлекать последнюю ячейку в этой области или первую ячейку в следующей области в указанном направлении.

  • Range("A1048576").End(xlUp).Row вернет номер строки этой ячейки (скажем, это A1000 для аргумента), поэтому возвращаемое значение равно 1000 .

  • "R2:R" & Range("A" & Rows.Count).End(xlUp).Row Поэтому делает строку R2:R1000 .

  • Итак, Range("R2:R" & Range("A" & Rows.Count).End(xlUp).Row) совпадает с Range("R2:R1000")

Interesting Posts

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

Входные данные каждый тик из файла Excel

визуальный базис для анализа ячеек в таблице Excel

Подключение данных Excel-to-Excel дает ограниченные возможности SQL

Визуальный базовый код, работающий в одном экземпляре, но не другой

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

как получить следующее не пустое значение ячейки в столбце excel

VBA: выбор двух дат в качестве диапазона для сводной таблицы?

mm / dd / yyyy HH: mm: ss как я могу извлечь дату?

Выпадающий список иерархической динамики в Excel

VBA – найти последнюю строку определенного диапазона столбцов

Формула смещения Excel с использованием диапазона

Vue-Json-Excel, длина данных равна 0

Сохранение файлов как .csv без потери десятичных точек

Использование Excel для возврата уникальных значений для идентификационных значений

Давайте будем гением компьютера.