ExcelをPythonで操作するための便利なライブラリとして注目されている「xlwings」。Excel業務をPythonで効率化したい方には必須のツールです。
今回は、xlwingsでシート内を検索する方法について詳しく解説します。日常のデータ管理や分析で頻繁に利用される「検索」機能を、Pythonでどのように活用できるのか、基本から応用までしっかりご紹介します。
xlwingsとは?
まずは、簡単に「xlwings」についておさらいしましょう。
xlwingsは、Excelの操作をPythonから実行できるライブラリです。VBAを使用せずにExcelファイルをPythonで管理・操作できるため、Pythonを使ったデータ分析や自動化がExcelユーザーの間で非常に人気です。
xlwingsのインストールや基本操作が知りたい方は、以下の記事に詳しく書いてあるよ!ぜひ見てね!
検索方法
対象のExcelファイルとフォルダ構成は以下のようなものを想定しています!
シート内を検索する基本方法
xlwingsを使えば、Excelシート内を簡単に検索することができます。例えば、シート全体から特定の文字列や値を検索する場合は、次のようにします。
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('都道府県情報.xlsx')
ws = wb.sheets['都道府県一覧']
# シート内を検索
search_value = "東京都"
found = False
# シートの全セルをループして検索
for cell in ws.range("A1").expand():
if cell.value == search_value:
print(f"見つかった場所: {cell.address}")
found = True
break
if not found:
print("値が見つかりませんでした")
wb.close()
ws.range(“A1”).expand() でシートの範囲を取得し、各セルの value 属性と検索する値を比較しています!
特定の行から検索する方法
次に、「特定の行」から検索する方法をご紹介します。特に、大量のデータがある場合、すべてを検索するよりも、特定の範囲を絞って検索する方が効率的です。
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('都道府県情報.xlsx')
ws = wb.sheets['都道府県一覧']
search_value = "知事の名前"
# 1行目の範囲を指定して検索
found = False
for cell in ws.range("1:1"):
if cell.value == search_value:
print(f"見つかった場所: {cell.address}")
found = True
break
if not found:
print("値が見つかりませんでした")
wb.close()
rangeの中身を数値で指定してあげることで行を指定できるよ!
行がわかる時は、すべてを検索するのではなく、行で検索しましょう!
特定の列から検索する方法
次に、「特定の列」を検索対象とする方法です。例えば、B列から検索する場合のコードは以下の通りです。
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('都道府県情報.xlsx')
ws = wb.sheets['都道府県一覧']
search_value = "東京都"
# B列の範囲を指定して検索
found = False
for cell in ws.range("B:B"):
if cell.value == search_value:
print(f"見つかった場所: {cell.address}")
found = True
break
if not found:
print("値が見つかりませんでした")
wb.close()
rangeの中身をアルファベットで指定することで列をしてできます!
特に縦に長いデータセットでは、この方法がとても役に立ちます。列全体や特定の列範囲だけを検索したい場合には、この方法を活用しましょう。
複数条件での検索方法
次に、「複数の条件」を指定して検索する方法をご紹介します。例えば、「中部地方」で かつ 面積が13000㎢より大きい都道府県名を表示してみます!
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('都道府県情報.xlsx')
ws = wb.sheets['都道府県一覧']
# シート内を検索
# 地方についての条件
condition_1 = "中部地方"
# 面積についての条件
condition_2 = 13000
found = False
# シートの全セルをループして検索
for cell in ws.range("F:F"):
if cell.value == condition_1:
# 条件1を満たした行のD列の値を条件2と比較
if ws.range((cell.row, 4)).value > condition_2:
# 条件にマッチした都道府県名を表示
print(f"見つかった値: {ws.range((cell.row, 2)).value}")
found = True
break
if not found:
print("値が見つかりませんでした")
wb.close()
まず、条件①について検索を掛けて、引っかかったセルの情報から
更に条件②を満たすかチェックする!この方法なら条件がいくつでも大丈夫だね!
【実践】検索結果をハイライト表示する方法
import xlwings as xw
# Excelファイルを開く
wb = xw.Book('都道府県情報.xlsx')
ws = wb.sheets['都道府県一覧']
search_value = "東京都"
# B列の範囲を指定して検索
found = False
for cell in ws.range("B:B"):
if cell.value == search_value:
cell.color = (255, 255, 0)
found = True
break
if not found:
print("値が見つかりませんでした")
wb.save("ハイライト済み.xlsx")
wb.close()
業務ではこんな使い方もあると思います!
セルの色は、cell.colorで変更可能ですよ!
まとめ
今回の記事では、xlwingsを使ってシート内の検索を効率的に行う方法について解説しました。以下のポイントが重要です。
- シート全体の検索方法
- 特定の行や列を検索する方法
- 複数条件での検索やカスタマイズ
- 検索結果のハイライト表示
Pythonとxlwingsを組み合わせることで、Excel業務が一層スムーズに。検索処理を自動化し、日々の業務効率化に役立ててください。
この記事を参考に、ぜひ皆さんもxlwingsを使った高度なExcel操作に挑戦してみてください!
コメント