- ベストアンサー
エクセル トップテン機能
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「上位」の場合の作成例: sub macro1() dim target as range activesheet.autofiltermode = false set target = range("A1:A" & range("A65536").end(xlup).row) target.autofilter field:=1, criteria1:=">=" & application.large(target, 10), operator:=xland, criteria2:="<=" & application.large(target, 5) end sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
まず操作だが 例データ A列 計数 12 34 56 32 45 21 82 23 61 45 37 ーー どこか使わないセルに 今D2,D3と仮定する D2に =LARGE(A2:A12,5) D3に =LARGE(A2:A12,10) と入れる ’--- 条件部のセル F2セルに ="<=" & LARGE(A1:A12,5) G2セルに =">=" & LARGE(A2:A12,10) トするとD2,D3セルは要らない ーーー 条件部 F1:G2に 計数 計数 F2の式 ="<="&D2 G2の式 =">=" & D3 (注)またはD2,D3を使わない前記の式を入れる ーーー データーフィルターフィルタオプションの設定の操作をすると 結果 計数 34 32 45 21 23 45 37 ーー 同値の順番などはLarge関数の既定の性格で規定される。それガ気に食わない場合はこの方法は使えない。 ーー そのままVBAにも出来る。マクロの記録を多少修正。 F1:G1に「計数」、I1に計数を入れて実行。 Sub Macro4() x = WorksheetFunction.Large(Range("A1:A12"), 5) MsgBox x y = WorksheetFunction.Large(Range("A1:A12"), 10) MsgBox y Range("F2") = "<=" & x Range("G2") = ">=" & y Range("A1:A12").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "F1:G2"), CopyToRange:=Range("I1:I12"), Unique:=False End Sub ーーー VBAだと、他にも色々なロジックが考えられるだろう。
お礼
ありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
B1セルに選択抽出とでも入力します。 B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(AND(RANK(A2,A:A)>=5,RANK(A2,A:A)<=10),1,"")) その後に「並べ替えとフィルタ」から「フィルタ」を選択しB列で1の付いたものを抽出するようにすればよいでしょう。
お礼
ありがとうございました。
お礼
ありがとうございました。