Selecione uma coluna inteira menos a linha do cabeçalho em uma macro do Excel

8

Como eu acessaria um intervalo que corresponde a uma coluna inteira iniciando na linha 2 (existe uma linha de cabeçalho)?

O final da seleção deve ser a última célula não vazia da coluna.

Dave
fonte

Respostas:

5

Consulte o artigo de suporte da Microsoft Como selecionar células / intervalos usando procedimentos do Visual Basic no Excel , nº 19 ( como selecionar um intervalo inteiro de células contíguas em uma coluna ).

Peter Mortensen
fonte
Isso seleciona mais de um milhão de linhas na pasta de trabalho que estou usando, mesmo que tudo além de 300 esteja em branco.
Dave Dave
como sobre:. Sub LastCellBeforeBlankInColumn () / Range ( "A1") End (xlDown) .Select / End Sub
2

Tente o seguinte:

Range(Range("A2"),Range("A2").End(xldown)).Select

ou isto:

Range(Range(Cells(2, 1), Cells(2, 1)), Range(Cells(65535, 1), Cells(65535, 1)).End(xlUp)).Select
Michael Galos
fonte
2

Referindo-se a esta resposta do SO , o único método seguro é o .find()método.
Todos os outros métodos podem dar resultados incorretos se você excluiu anteriormente algumas células.

Exemplo para obter as últimas células

Lastrow =  Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Lastcol =  Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column

E uma resposta específica para sua pergunta (supondo que seus dados estejam na coluna 2, começando na linha 2)

Range([B2], [B:B].Find("*", [B1], , , xlByRows, xlPrevious)).select

insira a descrição da imagem aqui

nixda
fonte
1

Você pode usar os atalhos de teclado do Excel. Experimente Ctrl+ Home.

Isso levaria você à célula A1 (se você não tiver usado o painel de congelamento). Desça uma célula e use os botões Ctrl+ Shift+ Down arrowpara selecionar até a última linha inserida.

Se você precisar selecionar o valor da coluna, use o right arrowbotão em vez do down arrowbotão.

Peter Mortensen
fonte
0

Esse pedaço de código calcula a média de tudo, exceto o cabeçalho com o cabeçalho na célula "B1"

Dim GG as Long
GG = Application.WorksheetFunction.Average(ActiveSheet.Range("B2", Range("B2").End(xlDown)))
RWB
fonte