Как бы я получить доступ к диапазону, который соответствует всему столбцу, начиная со строки 2 (есть строка заголовка)?
Конец выделения должен быть последней непустой ячейкой в столбце.
Как бы я получить доступ к диапазону, который соответствует всему столбцу, начиная со строки 2 (есть строка заголовка)?
Конец выделения должен быть последней непустой ячейкой в столбце.
См. Статью службы поддержки Microsoft. Как выбрать ячейки / диапазоны с помощью процедур Visual Basic в Excel, № 19 (Как выбрать весь диапазон смежных ячеек в столбце).
Попробуй это:
Range(Range("A2"),Range("A2").End(xldown)).Select
или это:
Range(Range(Cells(2, 1), Cells(2, 1)), Range(Cells(65535, 1), Cells(65535, 1)).End(xlUp)).Select
Вы можете использовать сочетания клавиш Excel. Попробуйте Ctrl + Home.
Это приведет вас к ячейке A1 (если вы не использовали панель замораживания). Переместитесь на одну ячейку вниз, а затем с помощью кнопок со стрелками Ctrl + Shift + Down выберите до последней введенной строки.
Если вам нужно выбрать значение столбца, используйте кнопку со стрелкой вправо вместо кнопки со стрелкой вниз .
Ссылаясь на этот ответ SO, единственный безопасный метод - это метод .find()
.
Все другие методы могут дать неправильные результаты, если вы ранее удалили несколько ячеек.
Пример получения последних ячеек
Lastrow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Lastcol = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
И конкретный ответ на ваш вопрос (при условии, что ваши данные находятся в столбце 2, начиная со строки 2)
Range([B2], [B:B].Find("*", [B1], , , xlByRows, xlPrevious)).select
Этот фрагмент кода усредняет все, кроме заголовка с заголовком в ячейке "B1"
Dim GG as Long
GG = Application.WorksheetFunction.Average(ActiveSheet.Range("B2", Range("B2").End(xlDown)))