Para selecionar as células visíveis ...
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select
Mas isso levanta a questão: o que você realmente quer fazer com as células?
Eu estou tentando fazer uma macro que eu possa usar para selecionar automaticamente todos os valores dentro do intervalo filtrado da coluna. Idealmente, estou tentando fazer com que isso funcione com 10 condições de filtro (1-10), mas o número de valores retornados para essas condições pode variar.
Anexei um conjunto muito pequeno de dados de amostra de como as colunas serão. Eu estou filtrando pela segunda coluna "LinSpatialBin". Eu estou tentando obter a média dos valores na última coluna (evento LIN / comprimento de faixa) para cada condição filtrada (por exemplo, se houver dois valores retornados para spatialbin 1, quero sua média na primeira célula da coluna à direita) . Eu pensei que eu deveria usar referências relativas, pois isso precisa trabalhar em vários intervalos de coluna em diferentes planilhas.
Por favor, deixe-me saber se posso fornecer mais detalhes ou esclarecer qualquer coisa. Abaixo está o script e abaixo estão os dados da amostra.
Script
Sub test()
'
' test Macro
' test
'
' Keyboard Shortcut: Ctrl+q
'
ActiveCell.Columns("A:E").EntireColumn.Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="1"
ActiveCell.Offset(2, 5).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="2"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="3"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="4"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="5"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="6"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="7"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="8"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="9"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Range("$A$1:$E$1142").AutoFilter Field:=2, Criteria1:="10"
ActiveCell.Offset(27, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC[-1]:R[27]C[-1])"
ActiveCell.Offset(1, 0).Range("A1").Select
Selection.AutoFilter
ActiveWindow.SmallScroll Down:=-24
End Sub
Dados da amostra
right_8.1.2017_CTRL_LIN_MTX_2_1_1200FR LINTrackLINSpatiLIN Beha LIN TraLIN event/tracklength 1 1 0 0 2 1 0 0 3 1 0 0 4 1 0 0 5 1 0 0 6 1 0 0 7 1 0 0 8 1 0 0 9 1 0 0 1 2 0 0 2 2 0 0 3 2 0 0 4 2 0 0 5 2 0 5 0.00 6 2 0 0 7 2 0 0 8 2 0 1 0.00 9 2 0 0 1 3 0 0 2 3 0 0 3 3 0 0 4 3 0 0 5 3 22 92 0.24 6 3 0 0 7 3 0 6 0.00 8 3 5 20 0.25 9 3 0 0 1 4 0 0 2 4 0 4 0.00 3 4 0 0 4 4 0 0 5 4 9 58 0.16 6 4 0 0 7 4 2 17 0.12 8 4 0 0 9 4 1 1 1.00 1 5 0 0 2 5 7 53 0.13 3 5 1 7 0.14 4 5 0 0 5 5 0 0 6 5 1 9 0.11 7 5 1 5 0.20 8 5 0 0 9 5 3 11 0.27 1 6 0 0 2 6 1 23 0.04 3 6 4 16 0.25 4 6 0 0 5 6 0 0 6 6 2 15 0.13 7 6 0 0 8 6 0 0 9 6 0 0 1 7 3 4 0.75 2 7 6 29 0.21 3 7 0 0 4 7 5 20 0.25 5 7 0 0 6 7 0 0 7 7 0 0 8 7 0 0 9 7 0 0 1 8 2 10 0.20 2 8 1 5 0.20 3 8 0 0 4 8 14 66 0.21 5 8 0 0 6 8 0 0 7 8 0 0 8 8 0 0 9 8 0 0 1 9 1 4 0.25 2 9 1 7 0.14 3 9 0 0 4 9 10 47 0.21 5 9 0 0 6 9 0 0 7 9 0 0 8 9 0 0 9 9 0 0 1 10 1 3 0.33 2 10 3 10 0.30 3 10 0 0 4 10 15 77 0.19 5 10 0 0 6 10 0 0 7 10 0 0 8 10 0 0 9 10 0 0
Para selecionar as células visíveis ...
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select
Mas isso levanta a questão: o que você realmente quer fazer com as células?
Tags microsoft-excel vba