Pythonを使って編集したエクセルファイルを確認する時、
既にオートフィルターがかかってたら便利なのに…。
Pythonでオートフィルターを設定する方法はないの?
あります!しかも簡単です!
また、範囲設定のコツも紹介します!
Pythonでオートフィルターを設定する方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
Pythonでエクセルにオートフィルターを設定するには
「auto_filter.ref」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
ws = wb['Sheet1']
ws.auto_filter.ref = 'A1:D4'
wb.save('input.xlsx')
ws.auto_filter.ref = ‘A1:D4’
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
オートフィルターを設定
ws.auto_filter.ref = ‘A1:D4’
この一文でオートフィルターを設定することができます。
右辺にオートフィルターを設定する範囲を指定してください。
【 ワークシート変数.auto_filter.ref = ‘オートフィルターを設定する範囲‘ 】
オートフィルターを設定する範囲について
オートフィルターを設定する範囲が明確にわからない場合は、列方向(A~Dなど)を少し多めに設定しておくといいです。
なぜなら、実際の表が設定範囲より大きい場合、設定されない列があるからです。
★オートフィルターを少なめに設定した場合★
下図は今回の見本の「A1~D3」をオートフィルター設定した場合です。
D列にオートフィルターが設定されていないのがわかります。
しかし行方向は3行目までしか設定していないにもかかわらず、キチンと7行目までの支店が表示され、オートフィルターが設定されています。
★オートフィルターを多めに設定した場合★
今度は「A1~G9」と多めに設定した見本です。
多めに設定すると、「E~G列」に余計なオートフィルターが追加されますが、確認するだけなら邪魔にはならないといえます。
行方向は多く設定しすぎると、余計な空白セルまで巻き込んでしまいますので要注意です。
以上のことから、オートフィルターを設定する際は、列方向(A~Dなど)を少し多めに設定しておくとよいでしょう。
下記記事にてウィンドウ枠を固定する方法を解説しております。
併せて設定すると更に便利ですので、ご参考ください。
その他の解説
既存ファイル操作の基本解説は下記記事で行っております。ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
開いていなければ、コンピューターを再起動して再度トライしてみましょう。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
Pythonで既存のエクセルファイルにオートフィルターを設定する方法を解説いたしました。
オートフィルター設定 = 「auto_filter.ref」と覚えてください。
最後までお読みいただき、ありがとうございました。がんばってください!