セル値取得は「Excelの特定セルから値を読み取り、Pythonで自由に扱える形にする」ための基本操作
Excel業務自動化の中でも セルの値を取得することは最も重要な基礎です。
なぜなら、どんな自動化でも最初に「Excelから必要な値を取り出す」工程が必ず発生するからです。
- A1 の値を読みたい
- 特定の行・列の値を取得したい
- 数式の結果を取得したい
- セル範囲をまとめて読みたい
Pythonでは openpyxl を使うことで、Excelのセルを自由に読み取れます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。
openpyxlでセルの値を取得する基本(最も実務向け)
最小構成:A1 の値を取得する
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
value = ws["A1"].value
print(value)
Python深掘りポイント
ws["A1"].valueでセルの値を取得- 数字・文字列・日付・数式の結果など、Excelの値をそのまま取得できる
- openpyxl は「セル単位の操作」に強いため、細かい読み取りが可能
行番号・列番号でセルを取得する(動的な位置指定に便利)
row と column を使って取得
value = ws.cell(row=2, column=3).value
print(value)
Python深掘りポイント
row=2, column=3は「C2」を意味する- ループ処理で大量のセルを扱うときに必須
- 動的にセル位置を決めたい場合に非常に便利
数式の結果を取得する(計算済みの値を読みたい場合)
data_only=True を使う
wb = load_workbook("sample.xlsx", data_only=True)
ws = wb["Sheet1"]
print(ws["C5"].value)
Python深掘りポイント
data_only=Trueを指定すると「数式そのもの」ではなく「計算結果」が取得できる- レポートの集計結果を読みたいときに必須
- 注意点として、Excelで一度計算されていないと結果が空になることがある
セル範囲をまとめて取得する(表形式のデータに便利)
A1〜C5 の範囲を取得する
for row in ws["A1":"C5"]:
for cell in row:
print(cell.value)
Python深掘りポイント
ws["A1":"C5"]で範囲指定- 行ごとにタプルで取得される
- 表形式のデータをまとめて読みたいときに便利
行全体・列全体を取得する(Excelの表を扱う基本)
行全体を取得
for cell in ws[3]:
print(cell.value)
Python列全体を取得
for cell in ws["B"]:
print(cell.value)
Python深掘りポイント
ws[3]は3行目、ws["B"]はB列- 行・列単位で処理したいときに非常に便利
- Excelの表をPythonで扱うときの基本テクニック
例題①:売上シートの「金額」セルを取得して合計する
シナリオ
金額が B2〜B10 に入っているとする。
from openpyxl import load_workbook
wb = load_workbook("sales.xlsx")
ws = wb["売上"]
total = 0
for cell in ws["B2":"B10"]:
total += cell[0].value
print("合計:", total)
Python深掘りポイント
- openpyxl でも集計は可能
- pandas を使わずに Excel だけで完結したい場合に便利
例題②:テンプレートの指定セルから設定値を読み取る
シナリオ
テンプレートの B2 に「レポート名」が入っている。
wb = load_workbook("template.xlsx")
ws = wb["設定"]
report_name = ws["B2"].value
print("レポート名:", report_name)
Python深掘りポイント
- 設定値をExcelで管理しておき、Pythonで読み取る運用は実務で非常に多い
- Excelを「設定ファイル」として使える
例題③:セル範囲を読み取ってリスト化する
シナリオ
A列の名前一覧をPythonのリストにしたい。
names = [cell.value for cell in ws["A"] if cell.value is not None]
print(names)
Python深掘りポイント
- Excelの表をPythonのリストに変換できる
- そのままループ処理や検索に使える
- データ抽出の自動化に最適
pathlib を使った読みやすいセル取得コード
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("sample.xlsx")
wb = load_workbook(path)
ws = wb.active
print(ws["A1"].value)
Pythonメリット
- パス結合が
/で直感的 - 大規模プロジェクトでも保守性が高い
セル値取得を業務で設計するときの視点
- openpyxl は「セル単位の操作」に最適
- 数式の結果を取得したい場合は data_only=True が必須
- 行・列・範囲の取得を組み合わせると強力なデータ抽出ができる
- Excelを「設定ファイル」として使うと業務自動化が柔軟になる
- pandas と違い、Excelの書式や数式を保持したまま扱える
