1

Я пытаюсь создать макрос, который можно использовать для автоматического выбора всех значений в пределах отфильтрованного диапазона столбца. В идеале я пытаюсь заставить это работать с 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

1 ответ1

0

Чтобы выделить видимые ячейки ....

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select

Но возникает вопрос, что вы действительно хотите сделать с клетками?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .