Definir un rango dentro de una columna filtrada en Excel

Definir un rango dentro de una columna filtrada en Excel

Estoy intentando crear una macro que pueda usar para seleccionar automáticamente todos los valores dentro del rango filtrado de la columna. Idealmente, estoy intentando que esto funcione con 10 condiciones de filtro (1-10), pero la cantidad de valores devueltos para estas condiciones puede variar.

Adjunto un conjunto muy pequeño de datos de muestra de cómo se verán las columnas. Estoy filtrando por la segunda columna "LinSpatialBin". Estoy intentando obtener el promedio de los valores en la última columna (evento LIN/longitud de la pista) para cada condición filtrada (por ejemplo, si se devuelven dos valores para el contenedor espacial 1, quiero su promedio en la primera celda de la columna a la derecha) . Pensé que debería usar referencias relativas ya que esto debe funcionar en múltiples rangos de columnas en diferentes hojas.

Avíseme si puedo proporcionar más detalles o aclarar algo. A continuación se muestra el script y debajo se encuentran los datos de muestra.

Guion

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

Data de muestra

derecha_8.1.2017_CTRL_LIN_MTX_2_1_1200FR
LINTrackLINSpatiLIN Beha LIN TraLIN evento/duración de la pista
       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

Respuesta1

Para seleccionar las celdas visibles....

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select

Pero esto plantea la pregunta ¿qué es lo que realmente quieres hacer con las células?

información relacionada