Excel VBA — выбор диапазона для последней полностью пустой строки

#vba #excel

#vba #excel

Вопрос:

У меня есть некоторый код VBA, который должен выбрать диапазон от A84 до X. Я использую этот код для выбора этого диапазона до последней строки в данных.

 Dim Lastrow As Integer
Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Range("A84:X" amp; Lastrow).Select
  

Это останавливается на первой строке с пустой ячейкой в столбце A. Мне нужно, чтобы он проверял столбцы от A до Z, а не только A. Например, если в столбце A есть значение в строках с 84 по 94, но для строки 95 есть только данные в столбце F или R, он не будет включать строку 95. Как это может посмотреть на столбцы A: Z, чтобы определить, является ли строка пустой?

Комментарии:

1. Столбец X или столбец Z ??

2. Ну, мне нужно выбрать столбец X в диапазоне, но мне нужно, чтобы он проверял A: Z, определяя, является ли он пустым.

Ответ №1:

просто установите Lastrow значение

 Lastrow = Range("A:Z").Find("*", , , , xlByRows, xlPrevious).Row
  

Ответ №2:

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

 maxRow = 0
for i=1 to 24 'A through X
    if maxRow < ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row then
        maxRow = ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row
    end if
next i
  

Тогда maxRow это то, чем вы хотите lastrow быть.

Ответ №3:

Вы можете перебрать все столбцы и сравнить последнюю строку каждого столбца. Затем вы можете изменить переменную lastRow всякий раз, когда найдете столбец с большим количеством строк, например:

 Dim i As Integer
Dim lastRow As Integer
lastRow = 1
For i = 1 To 26
    Dim lst As Integer
    lst = Cells(Rows.Count, i).End(xlUp).Row
    If lst > lastRow Then
        lastRow = lst
    End If
Next
Range("A84:X" amp; lastRow).Select
  

Ответ №4:

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

Рабочие листы («worksheetName»).UsedRange.lastRow

Это даст вам последнюю использованную строку, а не только последнюю строку с данными в первом столбце