xlwingsフィルターの設定でExcel操作を快適に!効率的なデータ処理方法と活用のポイント

Excel

Excelを使ったデータ処理において、フィルター機能は非常に便利です。特に大量のデータを扱う際に特定の条件に合致する情報だけを抽出することで、視認性や分析の効率を高めることができます。しかし、通常のExcelフィルターを手動で操作するだけでは、毎回の繰り返し作業が煩わしいと感じることもあるでしょう。そこで「xlwings」を使った自動化を活用することで、フィルターの設定や管理が格段に楽になります。

この記事では、Pythonライブラリ「xlwings」を使ってExcelのフィルター機能を自動化する方法について解説します。さらに、フィルター設定を通して業務の効率化を図るポイントや活用例についても紹介していきます。

xlwingsのインストールと基本操作

ゆーや
ゆーや

xlwingsが初めて!という方は、以下の記事で詳しく解説しているよ!

ぜひご覧ください!

サンプルデータ作成

次に、Excelファイルにサンプルデータを作成してみましょう。Pythonコードを使って簡単なサンプルデータを入力していきます。

import xlwings as xw

# Excelブックを新規作成し、シートを選択
wb = xw.Book()
sheet = wb.sheets['Sheet1']

# サンプルデータを入力
data = [
    ["ID", "名前", "部門", "売上"],
    [1, "佐藤", "営業", 120000],
    [2, "鈴木", "技術", 150000],
    [3, "高橋", "営業", 110000],
    [4, "田中", "人事", 95000],
    [5, "伊藤", "技術", 134000],
    [6, "山本", "営業", 178000],
]

# データをA1セルから入力
sheet.range("A1").value = data

# 保存
wb.save("sample.xlsx")

# クローズ
wb.close()
ゆーや
ゆーや

上記のコードを実行すると、新しいExcelファイルにデータが入力されます。このデータをもとに、フィルター設定を行っていきます。

フィルター設定の方法

作成したサンプルデータに対し、フィルターを設定して特定の条件でデータを抽出します。

営業部門のデータのみを抽出

例えば、「部門」列に「営業」が含まれる行のみを表示させたい場合は、以下のコードでフィルターを設定します。

import xlwings as xw

# Excelブックを新規作成し、シートを選択
wb = xw.Book()
sheet = wb.sheets['Sheet1']

# サンプルデータを入力
data = [
    ["ID", "名前", "部門", "売上"],
    [1, "佐藤", "営業", 120000],
    [2, "鈴木", "技術", 150000],
    [3, "高橋", "営業", 110000],
    [4, "田中", "人事", 95000],
    [5, "伊藤", "技術", 134000],
    [6, "山本", "営業", 178000],
]

# データをA1セルから入力
sheet.range("A1").value = data

# B列(部門)に"営業"が含まれる行のみを表示
sheet.range("A1:D7").api.AutoFilter(Field=3, Criteria1="営業")

# 保存
wb.save("sample.xlsx")

# クローズ
wb.close()
ゆーや
ゆーや

Field=3とすることで、3番目の列(C列)にフィルターを適用しています!Criteria1=”営業”の条件で、営業部門のデータだけが表示されます!

複数条件の設定

次に、複数条件を使ったフィルターを見てみましょう。例えば、「部門が営業」で、売上が120,000円以上のデータだけを抽出するコードは次の通りです。

import xlwings as xw

# Excelブックを新規作成し、シートを選択
wb = xw.Book()
sheet = wb.sheets['Sheet1']

# サンプルデータを入力
data = [
    ["ID", "名前", "部門", "売上"],
    [1, "佐藤", "営業", 120000],
    [2, "鈴木", "技術", 150000],
    [3, "高橋", "営業", 110000],
    [4, "田中", "人事", 95000],
    [5, "伊藤", "技術", 134000],
    [6, "山本", "営業", 178000],
]

# データをA1セルから入力
sheet.range("A1").value = data

# B列で「営業」、D列で120,000円以上の条件でフィルター
sheet.range("A1:D7").api.AutoFilter(Field=3, Criteria1="営業")
sheet.range("A1:D7").api.AutoFilter(Field=4, Criteria1=">=120000")

# 保存
wb.save("sample.xlsx")

# クローズ
wb.close()
ゆーや
ゆーや

このように1つ目のフィルター条件を付けた後にもう1つフィルター条件を付けることで、条件1かつ条件2を満たすデータだけ表示させることが可能です!

フィルター後のデータを取得

フィルターした結果をpython側で取得したい場合は次のようにしましょう!

import xlwings as xw

# Excelブックを新規作成し、シートを選択
wb = xw.Book()
sheet = wb.sheets['Sheet1']

# サンプルデータを入力
data = [
    ["ID", "名前", "部門", "売上"],
    [1, "佐藤", "営業", 120000],
    [2, "鈴木", "技術", 150000],
    [3, "高橋", "営業", 110000],
    [4, "田中", "人事", 95000],
    [5, "伊藤", "技術", 134000],
    [6, "山本", "営業", 178000],
]

# データをA1セルから入力
sheet.range("A1").value = data

# B列の「部門」で"営業"のみフィルターを適用
sheet.range("A1:D7").api.AutoFilter(Field=3, Criteria1="営業")

# フィルター適用後の可視セル(表示されているセル)を取得
filtered_data = []
for row in sheet.range("A2:D7").rows:
    if not row[0].api.EntireRow.Hidden:  # 行の可視性を確認
        filtered_data.append(row.value)

# 取得したフィルター結果を表示
print("フィルター後のデータ:")
for row in filtered_data:
    print(row)
# 保存
wb.save("sample.xlsx")

# クローズ
wb.close()
ゆーや
ゆーや

フィルターした結果をさらに加工して、利用するなどあれば、

この方法が使えるね!

フィルターのクリア

# フィルターのクリア
sheet.range("A1:D7").api.AutoFilter()  # これでフィルターを解除
ゆーや
ゆーや

必要なタイミングで上記のコードを挿入してみてね!

まとめ

xlwingsを使ったフィルターの自動化は、Excel作業の効率化や精度向上に大いに役立ちます。特定条件に基づいたデータ抽出を簡潔なコードで実行できるため、日々のデータ処理の負担が軽減されます。また、複数条件の設定や動的な期間指定にも対応できるため、幅広い業務ニーズに応じたカスタマイズが可能です。

ぜひ一度、xlwingsを使ったフィルター設定に挑戦してみてください。効率的で正確なExcel操作が身につけば、Excelを活用したデータ分析や管理の生産性も大幅に向上するでしょう!

コメント

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