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.