Pythonを使ってExcelを操作するための強力なライブラリ「xlwings」は、業務の自動化やデータ処理を効率化するために非常に便利です。特に、Excel関数をPython経由で自動的にシートに入力し、実行結果を取得する機能は、多くの場面で役立ちます。
本記事では、xlwings を使用してExcel関数をPythonから入力する方法について、具体的なコード例とともに詳しく説明します。
xlwingsのセットアップ
xlwingsのインストールや基本操作は以下の記事から見てみてください!
Excel関数の入力方法
xlwings を使ってExcel関数をセルに入力するには、通常のセル操作と同じ方法で関数をテキストとして入力します。例えば、Excelの SUM 関数をPythonから入力する場合、sheet.range().value に関数を文字列として渡すだけで、Excel側で自動的に実行されます。
SUM関数の入力
import xlwings as xw
# Excelアプリケーションを起動
app = xw.App(visible=False)
# ワークブックの作成
wb = app.books.add()
# ワークシートの取得
sheet = wb.sheets[0]
# セルA1からA3に数値を入力
sheet.range('A1').value = 10
sheet.range('A2').value = 20
sheet.range('A3').value = 30
# SUM関数をセルA4に入力
sheet.range('A4').value = '=SUM(A1:A3)'
# 保存
wb.save("sample.xlsx")
# クローズ
wb.close()
app.quit()
このコードは、A1からA3までのセルに数値を入力し、その合計を求めるために SUM 関数をセルA4に入力しています!xlwings では、Excel関数を文字列で入力するだけで、自動的にその関数が実行され、結果が反映されます!
VLOOKUP関数の入力例
次に、VLOOKUP 関数を使ってデータを検索する例を見てみましょう。まずは検索対象のデータを入力し、VLOOKUP関数で値を取得します。
import xlwings as xw
# Excelアプリケーションを起動
app = xw.App(visible=False)
# ワークブックの作成
wb = app.books.add()
# ワークシートの取得
sheet = wb.sheets[0]
# 検索対象のデータを入力
sheet.range('A1').value = 'ID'
sheet.range('B1').value = '名前'
sheet.range('A2').value = 1
sheet.range('B2').value = '山田太郎'
sheet.range('A3').value = 2
sheet.range('B3').value = '佐藤花子'
# VLOOKUP関数を使ってIDが1の名前を検索
sheet.range('C1').value = '結果'
sheet.range('C2').value = '=VLOOKUP(1, A2:B3, 2, FALSE)'
# 保存
wb.save("sample.xlsx")
# クローズ
wb.close()
app.quit()
この例では、A1からB3にデータを入力し、C2にVLOOKUP関数を入力してID 1に対応する名前「山田太郎」を取得しています!
数式の結果を取得する
Excelに関数を入力して実行すると、その結果がセルに表示されます。xlwings を使えば、その結果もPython側で取得できます。
SUM関数の結果を取得
import xlwings as xw
# Excelアプリケーションを起動
app = xw.App(visible=False)
# ワークブックの作成
wb = app.books.add()
# ワークシートの取得
sheet = wb.sheets[0]
# セルA1からA3に数値を入力
sheet.range('A1').value = 10
sheet.range('A2').value = 20
sheet.range('A3').value = 30
# SUM関数をセルA4に入力
sheet.range('A4').value = '=SUM(A1:A3)'
# SUM関数の結果を取得
sum_result = sheet.range('A4').value
print(sum_result) # 結果: 60
# 保存
wb.save("sample.xlsx")
# クローズ
wb.close()
app.quit()
sheet.range(‘A4’).value は、数式ではなく、セルA4に入力されたSUM関数の計算結果を返します。これにより、PythonからExcelの数式の結果を取得し、他の処理に活用することが可能です。
VLOOKUP関数の結果を取得
import xlwings as xw
# Excelアプリケーションを起動
app = xw.App(visible=False)
# ワークブックの作成
wb = app.books.add()
# ワークシートの取得
sheet = wb.sheets[0]
# 検索対象のデータを入力
sheet.range('A1').value = 'ID'
sheet.range('B1').value = '名前'
sheet.range('A2').value = 1
sheet.range('B2').value = '山田太郎'
sheet.range('A3').value = 2
sheet.range('B3').value = '佐藤花子'
# VLOOKUP関数を使ってIDが1の名前を検索
sheet.range('C1').value = '結果'
sheet.range('C2').value = '=VLOOKUP(1, A2:B3, 2, FALSE)'
# VLOOKUP関数の結果を取得
vlookup_result = sheet.range('C2').value
print(vlookup_result) # 結果: '山田太郎'
# 保存
wb.save("sample.xlsx")
# クローズ
wb.close()
app.quit()
VLOOKUPの検索結果がセルC2に表示されており、その値をPythonの変数 vlookup_result に格納して出力しています!
数式自体を取得する
import xlwings as xw
# Excelアプリケーションを起動
app = xw.App(visible=False)
# ワークブックの作成
wb = app.books.add()
# ワークシートの取得
sheet = wb.sheets[0]
# セルA1からA3に数値を入力
sheet.range('A1').value = 10
sheet.range('A2').value = 20
sheet.range('A3').value = 30
# SUM関数をセルA4に入力
sheet.range('A4').value = '=SUM(A1:A3)'
# SUM関数の結果を取得
sum = sheet.range('A4').formula
print(sum) # 結果: 60
# 保存
wb.save("sample.xlsx")
# クローズ
wb.close()
app.quit()
.formulaを使うことで、数式を直接取得することも可能です!
Excel関数のまとめと応用
この記事では、xlwings を使ってExcel関数をPythonから入力する方法を紹介しました。以下が今回の記事のポイントです。
- PythonからExcel関数を文字列で簡単に入力できる。
- SUM や VLOOKUP などの一般的な関数を自動で処理可能。
- 結果はPythonから取得し、他の処理に活用できる。
- 動的に関数を生成して、複雑な処理にも対応可能。
この方法を使えば、Excel操作の自動化がさらに進み、業務効率を大幅に向上させることができるでしょう!
コメント