Definir um intervalo dentro de uma coluna filtrada no Excel

Definir um intervalo dentro de uma coluna filtrada no Excel

Estou tentando criar uma macro que 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 da aparência das colunas. Estou filtrando pela segunda coluna "LinSpatialBin". Estou tentando obter a média dos valores na última coluna (evento LIN/comprimento da trilha) para cada condição filtrada (por exemplo, se houver dois valores retornados para o espacialbin 1, quero a média deles na primeira célula da coluna à direita) . Achei que deveria usar referências relativas, pois isso precisa funcionar em vários intervalos de colunas em planilhas diferentes.

Por favor, deixe-me saber se posso fornecer mais detalhes ou esclarecer alguma coisa. Abaixo está o script e abaixo estão os dados de amostra.

Roteiro

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 de amostra

direita_8.1.2017_CTRL_LIN_MTX_2_1_1200FR
LINTrackLINSpatiLIN Beha LIN TraLIN evento/comprimento da faixa
       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

Responder1

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?

informação relacionada