필터링된 열 범위 내의 모든 값을 자동으로 선택하는 데 사용할 수 있는 매크로를 만들려고 합니다. 이상적으로는 10개의 필터 조건(1-10)에서 작동하도록 하려고 하지만 이러한 조건에 대해 반환되는 값의 수가 다를 수 있습니다.
열의 모양에 대한 아주 작은 샘플 데이터 세트를 첨부했습니다. 두 번째 열 "LinSpatialBin"을 기준으로 필터링하고 있습니다. 필터링된 각 조건에 대해 마지막 열(LIN 이벤트/트랙 길이)에 있는 값의 평균을 얻으려고 합니다. 예를 들어 Spatialbin 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 이벤트/트랙 길이 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
보이는 셀을 선택하려면....
ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Select
그러나 이것은 당신이 정말로 세포로 무엇을 하고 싶은지 의문을 제기합니다.