2016-03-09 6 views
1

У меня есть код, который выбирает столбец с заголовком «Адрес».Выделить все ячейки со значением под заголовком

Sub FindAddressColumn() 
    Dim rngAddress As Range 
    Set rngAddress = Range("A1:Z1").Find("Address") 
    If rngAddress Is Nothing Then 
    MsgBox "Address column was not found." 
    Exit Sub 
    End If 
    Range(rngAddress, rngAddress.End(xlDown)).Select 
End Sub 

Я хочу выбрать вторую строку или строку после заголовка «Адрес» вплоть до последней строки со значением.

+0

'Range (rngAddress, rngAddress.End (xlDown)) Offset (1) .Select' –

+0

Я отредактировал мой вопрос, что я имею в виду, выберите следующую строку после заголовка «Адрес». Извините за путаницу. –

+1

'Диапазон (rngAddress.offset (1), rngAddress.End (xlDown)). Выберите' –

ответ

2

Используйте WorksheetFunction objectMATCH function, чтобы найти метку заголовка столбца в первой строке.

Sub FindAddressColumn() 
    dim cl as long 
    with worksheets("Sheet1") 
     if not iserror(application.match("address", .rows(1), 0)) then 
      cl = application.match("address", .rows(1), 0) 
      .range(.cells(2, cl), .cells(rows.count, cl).end(xlup)).select 
     else 
      MsgBox "Address column was not found." 
      Exit Sub 
     end if 
    end with 
End Sub 

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

Метод Range .Select ¹ не всегда является самым надежным методом ссылки на отдельные группы или группы Range object. Непосредственная ссылка на родительский лист с помощью With ... End With statement должна помочь.


¹ См How to avoid using Select in Excel VBA macros для более методов на получение от полагаться на выбор и активировать для достижения ваших целей.

2

В случае, если у вас есть пробелы в адресной колонке, используйте этот код:.

Sub FindAddressColumn() 
    Dim rngAddress As Range, LastRow As Long 
    Set rngAddress = Range("A1:Z1").Find("Address") 
    If rngAddress Is Nothing Then 
    MsgBox "Address column was not found." 
    Else 
    LastRow = Cells(Rows.Count, rngAddress.Column).End(xlUp).Row 
    Range(Cells(2, rngAddress.Column), Cells(LastRow, rngAddress.Column)).Select 
    End If 
End Sub 
Смежные вопросы