Excel(エクセル)VBAオートフィルターを繰り返し行う方法をご紹介!

Excel(エクセル)VBAでフィルターのみ設定する方法! Excel(エクセル)

業務中に調べることの多い、Excel,Word,PowerPointなどのノウハウを発信していきます!

Biz Magic編集部をフォローする

Excel(エクセル)VBAとは

皆さんExcelのVBAとはなにかをご存じでしょうか?

VBAは、Excelのワークブックやワークシート内のデータやオブジェクトに対してアクセスし、操作することができます。VBAを使用することで、ユーザーはExcelのさまざまな機能をカスタマイズしたり、繰り返し作業を自動化したり、独自の機能を追加したりすることができます。

VBAは、Excelのメニューバーやボタンに割り当てられたマクロを作成するためにも使用されます。マクロは、一連の操作や処理を記録して再生するためのスクリプトです。VBAを使用することで、マクロの記録だけでなく、より高度なプログラミング機能や条件分岐、ループなどの制御構造を使用したプログラムの作成も可能です。

VBAは、Excelだけでなく、他のMicrosoft Officeアプリケーション(Word、PowerPoint、Accessなど)でも使用することができます。また、VBAはExcel以外のアプリケーションとの連携や、外部のデータソースとのデータの取得や更新など、さまざまなタスクを実行するためにも利用されます。

VBAは、プログラミングの基礎知識があれば比較的簡単に学ぶことができます。VBAの学習には、VBAの構文やオブジェクトモデルの理解、関数やサブルーチンの作成、エラーハンドリングなどが含まれます。ExcelのVBAエディタを使用して、コードを入力、編集、実行することができます。

今回の記事ではExcelのVBA オートフィルターを繰り返し行う方法をご紹介していきます。

Excel(エクセル)VBA オートフィルターを繰り返し行う方法

では、早速ですがExcelのVBA オートフィルターを繰り返し行う方法をご紹介していきます。

まず、VBAを使用するためには「開発」タブの「Visual Basic」を選択します。

これでVBAを入力する画面を開くことができます。

開発タブがない方はExcelのオプションで開発にチェックをいれてください。

これで開発タブを使用できるようになります。

VBAのエディタに実装したい機能のコードを入力します。

今回やりたいのはA列に出てくる名前でフィルターをかけ、データを印刷し、フィルターを解除するコードを繰り返し行うことです。本人以外に見られたくないようなデータなどを扱う場合にとても役に立つと思います。また、今回はPDFにしていますが、メールで送信などVBAでできることは多いので業務の効率化のためにもこのコードが理解できるようにしっかりと見てみてください。

Sub PrintDataByUser()
Dim ws As Worksheet
Dim userColumn As Range
Dim uniqueUsers As Collection
Dim user As Variant

' 対象のワークシートを指定
Set ws = ThisWorkbook.Sheets("Sheet1") ' ワークシート名を変更

' ユーザー名が入力されている列を指定(A列を想定)
Set userColumn = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)

' ユニークなユーザー名を取得
Set uniqueUsers = New Collection
On Error Resume Next
For Each cell In userColumn
    uniqueUsers.Add cell.Value, CStr(cell.Value)
Next cell
On Error GoTo 0

' 各ユーザーごとにフィルターをかけて印刷
For Each user In uniqueUsers
    ' フィルタを解除(すべてのオートフィルターを解除)
    ws.AutoFilterMode = False

    ' フィルタをかける
    userColumn.AutoFilter Field:=1, Criteria1:=user

    ' フィルタリングされたデータを印刷(ここに印刷コードを追加)
    ActiveSheet.PrintOut

    ' フィルタを解除
    ws.AutoFilterMode = False
Next user
End Sub

このコードのポイントは以下の通りです。

Set ws = ThisWorkbook.Sheets(“Sheet1”) の部分で、フィルタをかける対象のワークシートを指定します。ワークシート名は必要に応じて変更してください。

Set userColumn = ws.Range(“A2:A” & ws.Cells(ws.Rows.Count, “A”).End(xlUp).Row) の部分で、ユーザー名が入力されている列を指定します。この例ではA列を想定していますが、必要に応じて他の列に変更できます。

・ユニークなユーザー名を取得するために、Collection オブジェクトを使用して重複を削除します。

・各ユーザーごとにフィルタをかけてデータを印刷し、フィルタを解除します。印刷コードは、必要に応じて実際の印刷操作に置き換えてください。

このコードを実行すると、指定した「使用者」ごとにフィルタをかけ、データを印刷し、フィルタを解除するプロセスが繰り返されます。必要に応じて、印刷コードを調整し、メール送信などの追加タスクを実行できます。

コードにはコメントを残しているのでわかりにくい部分はコメントをみて理解してみてください。また、コメントを見ても分からない場合は別途調べることでより自分の知識として定着させることができます。

Excelの操作方法は実際に手を動かし、身につけていきましょう

今の時代、様々な仕事でExcelを使用することがあるでしょう。今回はExcelのVBA オートフィルターを繰り返し行う方法についてご紹介しました。このような機能を使いこなすことができれば仕事にも役に立つので、実際に手を動かし、覚えていきましょう。

WordやExcelなどのOfficeツールでは便利なショートカットキーなどがたくさんあるのでよく使う作業に関してはショートカットキーを調べてみるのも効率よく仕事を進める上で大切なことなのでこれから実践してみましょう。

コメント

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