Definieren eines Bereichs innerhalb einer gefilterten Spalte in Excel

Definieren eines Bereichs innerhalb einer gefilterten Spalte in Excel

Ich versuche, ein Makro zu erstellen, mit dem ich automatisch alle Werte innerhalb des gefilterten Bereichs der Spalte auswählen kann. Idealerweise versuche ich, dies mit 10 Filterbedingungen (1-10) zum Laufen zu bringen, aber die Anzahl der für diese Bedingungen zurückgegebenen Werte kann variieren.

Ich habe einen sehr kleinen Satz Beispieldaten angehängt, die zeigen, wie die Spalten aussehen werden. Ich filtere nach der zweiten Spalte „LinSpatialBin“. Ich versuche, den Durchschnitt der Werte in der letzten Spalte (LIN-Ereignis/Tracklänge) für jede gefilterte Bedingung zu erhalten (wenn z. B. zwei Werte für Spatialbin 1 zurückgegeben werden, möchte ich deren Durchschnitt in der ersten Zelle der Spalte rechts). Ich dachte, ich sollte relative Referenzen verwenden, da dies über mehrere Spaltenbereiche in verschiedenen Blättern hinweg funktionieren muss.

Bitte lassen Sie mich wissen, ob ich weitere Einzelheiten liefern oder etwas klarstellen kann. Unten finden Sie das Skript und darunter die Beispieldaten.

Skript

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

Beispieldaten

right_8.1.2017_CTRL_LIN_MTX_2_1_1200FR
LINTrackLINSpatiLIN Beha LIN TraLIN Ereignis/Tracklänge
       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

Antwort1

So wählen Sie die sichtbaren Zellen aus …

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select

Dies wirft jedoch die Frage auf, was Sie wirklich mit den Zellen tun möchten.

verwandte Informationen