VBAで「上位10位」を自動抽出!面倒な集計作業を1秒で終わらせるコード

【業務効率化】VBA
スポンサーリンク

  • 「毎回手動で並び替えやコピペをするのが面倒…」
  • 「抽出ミス(11位までコピーしてしまった等)を防ぎたい」

そんなふうに感じたことはありませんか?

今回はそのようなお悩みを一瞬で解決するVBAの活用方法をご紹介していきます。

【業務効率化】VBAの記事を見る 

コピペでOK!上位10位を抽出するVBAコード

今回は、「Sheet1」にある表のB列(スコアなど)を基準に、上位10行を「抽出結果」シートにコピーするコードを作成しました。

Sub ExtractTop10()
    Dim wsData As Worksheet
    Dim wsResult As Worksheet
    Dim lastRow As Long
   
    ' 1. シートの設定
    Set wsData = ThisWorkbook.Worksheets("Sheet1") ' 元データがあるシート名
   
    ' 抽出結果シートがなければ作成、あれば中身を消す
    On Error Resume Next
    Set wsResult = ThisWorkbook.Worksheets("抽出結果")
    On Error GoTo 0
   
    If wsResult Is Nothing Then
        Set wsResult = ThisWorkbook.Worksheets.Add(After:=wsData)
        wsResult.Name = "抽出結果"
    Else
        wsResult.Cells.Clear
    End If
   
    ' 2. データの最終行を確認
    lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
   
    ' 3. オートフィルターを使って上位10位を抽出
    With wsData.Range("A1").CurrentRegion
        .AutoFilter Field:=2, Criteria1:="10", Operator:=xlTop10Items
       
        ' 4. 抽出されたデータをコピーして別シートに貼り付け
        .SpecialCells(xlCellTypeVisible).Copy Destination:=wsResult.Range("A1")
       
        ' 5. フィルターを解除
        .AutoFilter
    End With
   
    wsResult.Activate
    MsgBox "上位10位の抽出が完了しました!", vbInformation
End Sub

使い方はたったの3ステップ

  1. Excelで Alt + F11 を押して、VBAの画面を開きます。
  2. 「挿入」→「標準モジュール」をクリックし、上のコードを貼り付けます。
  3. F5 キーを押すか、Excel画面にボタンを作って登録すれば完了です!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました