Я пытаюсь создать макрос, который можно использовать для автоматического выбора всех значений в пределах отфильтрованного диапазона столбца. В идеале я пытаюсь заставить это работать с 10 условиями фильтра (1-10), но число значений, возвращаемых для этих условий, может варьироваться.
Я приложил очень небольшой набор образцов данных о том, как будут выглядеть столбцы. Я фильтрую по второму столбцу "LinSpatialBin". Я пытаюсь получить среднее значение в последнем столбце (событие LIN / длина трека) для каждого отфильтрованного условия (например, если возвращены два значения для пространственного объекта 1, я хочу получить их среднее значение в первой ячейке столбца справа) , Я думал, что я должен использовать относительные ссылки, поскольку это должно работать с несколькими диапазонами столбцов на разных листах.
Пожалуйста, дайте мне знать, если я могу предоставить более подробную информацию или уточнить что-нибудь. Ниже приведен сценарий, а ниже - пример данных.
скрипт
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
Пример данных
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
