Definiowanie zakresu w kolumnie filtrowanej w programie Excel


1

Próbuję utworzyć makro, którego mogę użyć do automatycznego wybierania wszystkich wartości w przefiltrowanym zakresie kolumny. W idealnej sytuacji staram się, aby działało to z 10 warunkami filtrowania (1-10), ale liczba wartości zwracanych dla tych warunków może się różnić.

Załączam bardzo mały zestaw przykładowych danych o tym, jak będą wyglądać kolumny. Filtruję według drugiej kolumny „LinSpatialBin”. Próbuję uzyskać średnią wartości w ostatniej kolumnie (zdarzenie LIN / długość ścieżki) dla każdego przefiltrowanego warunku (np. Jeśli dla spatialbin 1 zwracane są dwie wartości, chcę, aby ich średnia w pierwszej komórce kolumny po prawej) . Myślałem, że powinienem używać względnych odniesień, ponieważ wymaga to pracy nad wieloma zakresami kolumn w różnych arkuszach.

Daj mi znać, jeśli mogę podać więcej szczegółów lub wyjaśnić cokolwiek. Poniżej znajduje się skrypt, a poniżej przykładowe dane.

Scenariusz

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

Przykładowe dane

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


Co robi Twój kod zamiast celu? Jakie jest twoje dokładne pytanie?
Máté Juhász

Odpowiedzi:


0

Aby wybrać widoczne komórki ....

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select

Ale to nasuwa pytanie, co naprawdę chcesz zrobić z komórkami?

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.