PythonによるExcel自動化は、独学でも小さな課題から始められます。最初の目標は、数件のデータを読み、条件で選び、別ファイルへ保存し、保存後の中身まで確かめることです。 会社の重要な帳票を最初から書き換えるより、架空のデータで処理の意味を説明できる状態を目指しましょう。
この記事の対象は、Excelの表は使えるけれどPythonは初めて、という事務職・営業職などの社会人です。編集部作成の備品補充リストを題材に、学習順序と実行できるコードを紹介します。実務の時間短縮率や受講成果を測定した記事ではありません。
公式資料と講座情報の確認日:2026年10月6日。コードの基本仕様はopenpyxl公式チュートリアルを参照しています。サンプルは編集部が独自に作成し、掲載前に実行と出力内容を確認しています。
PythonでExcel自動化を独学する順番と、最初の練習課題
自動化したい作業を、一つの入力と出力に分ける
「Excelを自動化したい」だけでは、覚える範囲が広くなり過ぎます。最初に、今している作業を「どの表から」「何を条件に」「どんな表を作るか」の3点で書き出してください。例えば、備品一覧の在庫数と補充基準を比べ、補充が必要な品目だけを別の一覧へ出す、という形です。
この課題なら、メールの送信、発注システムへの登録、承認処理は含みません。品目の選択が正しいかを人が確認できる、小さな出力で終わります。自動化の範囲をここまでにすると、Pythonの学習と、会社の業務ルールや外部連携の設計を同時に抱えずに済みます。
題材は、実際の顧客名や売上ではなく、架空の備品で十分です。業務の構造が似ていれば、読み取りや条件分岐の練習はできます。講座へ質問する場合も、この架空のファイルなら説明しやすくなります。仕事のデータを外部へ持ち出せるかどうかは、学習の都合で判断しないようにします。
今回の完成条件は「補充対象が想定どおり」「数量が変わっていない」「元の一覧を上書きしない」「出力ファイルを再度読んでも同じ結果」の四つです。画面にエラーが出なかったことだけを完成条件にしないのがポイントです。動いたように見えても、対象の行を取り違える可能性があるためです。
Excelの関数や既存の集計機能で済む作業なら、それを使い続ける選択もあります。Pythonを学ぶ理由は、複数のファイルに同じ処理を適用したい、条件の判断をコードとして残したいなど、自分が困っている点から決めましょう。道具の選択に迷う人は、事務作業の自動化で最初に学ぶことも参考になります。
| 作業 | 最初に学ぶ内容 | 後の段階へ回すこと |
|---|---|---|
| 一覧から対象行を選ぶ | セルの値・条件分岐・繰り返し | 大量ファイルの一括処理 |
| 決まった列を別表へ出す | 列の順序・保存先・照合 | 既存帳票の複雑な書式 |
| 分類ごとに集計する | 集計条件・件数・合計の確認 | 分析用ライブラリの高度な操作 |
| 完成表を関係者へ配る | 出力内容を人が確認する手順 | 自動メール送信や外部登録 |
Pythonの基礎は、表を読むための五つに絞って始める
最初から言語の全機能を覚える必要はありません。今回の練習では、変数、リストやタプル、条件分岐、繰り返し、ライブラリの読み込みを使います。それぞれを「何のために使うか」とセットで覚えると、別の教材に移ったときも意味をつかみやすくなります。
変数は、読み込んだブックや、条件に合った行の一覧に名前を付けるために使います。リストは、複数の行をまとめて保持するための入れ物です。条件分岐は、在庫数が基準より少ないかを判断する部分です。繰り返しは、同じ判断を各行へ順番に適用します。ライブラリは、Excelファイルを扱うための機能を読み込む際に使います。
学習の順序としては、数値を比べる短いコードを動かし、次に複数の行へ同じ判断を繰り返し、最後にExcelファイルの読み書きを加えると理解しやすくなります。コードを長くする前に、「3は5より小さい」「7は5より小さくない」という判断を自分の言葉で説明できれば、条件式の意味を追えます。
つまずいた箇所は、その場で一つに絞って記録します。「Pythonが分からない」ではなく、「行から取り出した三つの値を、三つの変数へ入れる書き方が分からない」と書きます。この記録は検索にも、講師への質問にも使えます。用語を全部知ってから質問しようとする必要はありません。
なお、今回扱うのは通常のPythonから.xlsxファイルを読み書きする方法です。Excelのセル内でPythonを使う機能とは別の学習経路です。教材を探すときは、実行場所、必要な環境、対象のファイル形式を確認してください。似た名前でも、会社のパソコンで使える条件が同じとは限りません。
openpyxlを使う環境と、練習用ファイルの置き場を確認する
この記事では.xlsx形式のセルを扱うためにopenpyxlを使います。pandasは表の集計や整形にも使われますが、今回の小さな練習では、ブック、シート、行、セルの関係をそのまま追いやすいopenpyxlから始めます。両方を一度に導入する必要はありません。
Pythonが用意された学習用環境で、openpyxlを利用できることを確認します。公式チュートリアルにはpipでの導入方法が掲載されています。会社の端末を使う場合は、ソフトウェアやライブラリの導入が許可されるかを先に確認してください。管理者権限が必要な操作を、学習のために無断で進めないようにします。
環境が複数ある場合、「導入したPython」と「コードを実行しているPython」が異なると、導入済みでも読み込めないことがあります。教材の手順を繰り返す前に、どの環境で実行しているかを確認します。質問するときは、OS、Pythonの版、実行方法、表示されたエラーをそろえると説明しやすくなります。
下のサンプルは、実行時に新しい練習用フォルダーを作り、その中に入力ファイルと出力ファイルを作ります。ファイルの置き場は実行結果に表示されます。既存の業務ファイルは読みません。実行のたびに別のフォルダーが作られるので、同名の練習ファイルを使い回して混乱しにくい構成です。
一時フォルダーを使う例なので、学習記録として残す場合は、表示された場所から自分が管理できる場所へコピーしてください。これは本番用の保存先設計ではありません。継続運用へ進むときには、保存期間、共有範囲、バックアップ、処理履歴を別に決める必要があります。
架空の備品リストで、読み取りから別ファイル保存まで試す
次のコードは、備品名、在庫数、補充基準の三つの列を持つ小さな表を作り、在庫が基準を下回る行だけを別の表へ保存します。「在庫と基準が同じ行は含めない」という条件です。数量の自動発注はせず、確認用の補充候補を作るところで止めます。
入力はノート、ペン、封筒、付箋の4件です。選ばれるのはノートと封筒の2件で、元の値を保持します。先にこの期待結果を手で書いてから実行してください。予想を置いておくと、コードの結果を見て後から正解だと思い込むことを避けられます。
from pathlib import Path
from tempfile import mkdtemp
from openpyxl import Workbook, load_workbook
folder = Path(mkdtemp(prefix="excel_practice_"))
source = folder / "input.xlsx"
output = folder / "replenishment.xlsx"
headers = ("備品名", "在庫数", "補充基準")
# 架空の入力表を作る
book = Workbook()
sheet = book.active
sheet.title = "備品"
sheet.append(headers)
for row in [("ノート", 3, 5), ("ペン", 12, 5),
("封筒", 0, 10), ("付箋", 4, 4)]:
sheet.append(row)
book.save(source)
book.close()
# 値を読み、条件に合う行だけを残す
book = load_workbook(source, read_only=True)
sheet = book["備品"]
selected = []
try:
if tuple(next(sheet.values)) != headers:
raise ValueError("列名が想定と異なります")
for name, stock, minimum in sheet.iter_rows(min_row=2,
values_only=True):
if not isinstance(name, str) or not name.strip():
raise ValueError("備品名を確認してください")
if type(stock) is not int or type(minimum) is not int:
raise ValueError("在庫数と補充基準は整数にしてください")
if stock < 0 or minimum < 0:
raise ValueError("負の数量は扱いません")
if stock < minimum:
selected.append((name, stock, minimum))
finally:
book.close()
# 入力とは別のファイルへ保存する
if output.exists():
raise FileExistsError("出力先に同名ファイルがあります")
result = Workbook()
result_sheet = result.active
result_sheet.title = "補充候補"
result_sheet.append(headers)
for row in selected:
result_sheet.append(row)
result.save(output)
result.close()
# 保存したファイルを開き直して確認する
check = load_workbook(output, read_only=True)
try:
actual = list(check["補充候補"].iter_rows(min_row=2,
values_only=True))
finally:
check.close()
expected = [("ノート", 3, 5), ("封筒", 0, 10)]
if actual != expected:
raise ValueError(f"結果が想定と異なります: {actual}")
print("確認できた補充候補:", actual)
print("出力先:", output)
実行結果には、ノートと封筒の組み合わせ、および保存先が表示されます。数量を文字列や空欄にしたときは、勝手にゼロへ置き換えず、確認が必要な入力として止まる設計です。この仕様は今回の教材用に決めたもので、すべての備品管理業務で同じ扱いが適切という意味ではありません。
expectedは、この固定サンプルの正解です。入力例を変える練習では、期待する結果も自分で考えて変更します。本番の可変データに対して、毎回ノートと封筒が出ることを要求するコードではありません。学習用の照合条件と、業務で必要な検査を区別してください。
保存後の照合までできたら、条件を一つずつ変える
次は、ノートの在庫を5に変更してみます。補充基準と同じなので、今回の条件ではノートは対象外になります。封筒だけが出力されるという期待結果へ直し、保存後の照合も通るか確認してください。条件式を変えずに入力だけを変えることで、境界の判断を練習できます。
さらに、ペンの在庫を空欄にした場合を考えます。ゼロとして補充候補へ入れるのか、入力不足として処理を止めるのかは、業務のルールで決めることです。この記事のコードは後者です。数値でないものを無条件に数値へ変換すると、元データの不備を見えにくくする場合があります。
出力の確認は件数だけでは足りません。2件という数が合っていても、品目を取り違えている可能性があります。品目名、数量、列の順序を含めて照合します。後から項目を増やすときも、どの値が保持されるべきかを先に決めてから変更しましょう。
| 変更する条件 | 今回の仕様で期待する動作 | 確認の目的 |
|---|---|---|
| 在庫と基準が同じ | 補充候補へ含めない | 境界条件を確認する |
| 在庫が0で基準が正数 | 補充候補へ含める | 0を空欄と混同しない |
| 在庫が空欄・文字列 | 処理を止めて確認を促す | 不明な値を勝手に補わない |
| 出力先に同名ファイルがある | 上書き前に停止する | 前の成果物を保護する |
一つの表で理解できたら、列名を間違えた場合や、想定外のシートがある場合も確認できます。ファイルが10個、100個に増える前に、1個の入力に対する成功と失敗を区別できるようにします。読み取るだけの段階、保存する段階、照合する段階を分けて記録すると、原因を追いやすくなります。
独学で止まりやすい点と、Python講座を選ぶ判断基準
数式・書式・マクロを含む帳票は、単純な表と分けて考える
ここまでの課題は、文字と整数だけの小さな.xlsxファイルです。職場の帳票には数式、結合セル、図形、印刷設定、マクロなどが含まれる場合があります。小さな表で成功したからといって、そのまま同じ処理で既存帳票を保存し直してよいとは判断できません。
openpyxlの数式に関する公式説明では、数式の評価を行わないことが示されています。数式を書き込めることと、その計算結果をPython側で新しく求められることは別です。計算結果が必要なら、何がどこで計算するのかを確認します。
また、data_only=Trueは、その場で数式を再計算する指定ではありません。保存されている計算結果を読み取る設定なので、必要な値が保存されていない場合や古い場合を想定します。数式がある列を使う課題は、数式そのものを扱いたいのか、計算済みの値を扱いたいのかを先に分けてください。
公式チュートリアルには、既存ファイルの一部の要素を完全には読み取れず、同名保存で図形が失われる場合への注意もあります。元のファイルを守り、別名で保存した後に、必要な要素が維持されているか確認することが大切です。値だけ合えばよい集計表と、レイアウトが重要な申請書では検査内容が変わります。
マクロを含む.xlsmも、最初の練習とは別に扱います。要素を保持する設定があることと、マクロの編集や実行まで同じ方法でできることを混同しないようにします。既存業務で重要な帳票なら、仕様を理解している担当者と確認してから適用範囲を決めましょう。
学習時間は「動画を見た時間」より、説明できる処理で見積もる
独学に何時間必要かは、Excelの理解、Pythonの経験、実行環境、課題の難しさによって変わります。「数時間で完成」という教材の表現は、その教材の題材を扱う目安であり、自分の会社の帳票を運用できるまでの時間とは限りません。動画の長さだけで計画を決めないほうが調整しやすくなります。
例えば、最初の週は変数と条件式、次の週は行の読み取り、その次は保存と照合、と到達点で区切れます。これは編集部の計画例です。各段階で「なぜこの行が選ばれたか」「どのファイルに保存したか」「失敗したときどこで止まるか」を説明できるかを確認してから先へ進みます。
平日は短いコードを一つ読み、休日は前のコードを見ずに処理の流れを書いてみる、という配分も考えられます。まとまった時間が取れない場合でも、次に試す入力をメモしておくと再開しやすくなります。学習枠の整理には、社会人向けの週間学習計画の考え方を応用できます。
学習記録は「今日見た章」だけでなく、「できたこと」「説明できないこと」「次の一手」を残します。例えば「Excelを開けた/空欄の扱いが不明/空欄の行を一つ追加する」と書けます。学習が止まったときにも、最初から教材を見直す必要があるのか、狭い疑問だけ解決すればよいのかを判断できます。
複数の教材を買い足す前に、今の課題で止まる理由を確認しましょう。環境の問題なのか、基礎文法なのか、帳票の特殊な仕様なのかで、必要な支援は異なります。長い講座へ申し込む前に、独学を続ける条件と質問が必要な条件を比べることが大切です。
エラーを質問できる形に整理し、AIのコードも照合する
エラーが出たら、表示された文章を消さず、どの処理で止まったかを確認します。コードの行数だけではなく、読み込み、条件判断、保存、再読み込みのどの段階かを言葉にしてください。ファイルが見つからない場合と、数量が数値でない場合では、調べる先が違います。
質問に含める情報は、期待した結果、実際の結果、最小限の架空データ、実行環境です。個人名や会社の保存パスをそのまま貼る必要はありません。再現用に小さくした表でも同じ問題が起きるかを試すと、データ特有の問題か、コード全体の問題かを絞れます。
生成AIへ相談する場合も、コードを丸ごと作ってもらっただけでは学習の完成にはなりません。元ファイルへ保存していないか、空欄を勝手に変換していないか、対象外の行まで書き出していないかを確認します。今回なら、想定する2件と再読み込みした結果を照合する部分を残したまま改善します。
修正前後のコードで、同じ入力を試すことも重要です。通常入力だけを確認すると、以前は止まっていた不正な入力が、そのまま処理されるようになることがあります。期待した結果と、受け付けない入力の両方を記録してください。変更理由を説明できれば、講師にも相談しやすくなります。
データの欠損や重複をどう扱うかを深めるなら、Pythonで欠損・重複を確認する練習へ進めます。CSVとExcelではファイルの読み方が異なりますが、不明な値を決めつけず、処理前後の件数を確認する考え方は共通します。
Python講座は、Excel課題への対応と質問範囲で比較する
独学で小さな課題を最後まで進められるなら、すぐにスクールへ移る必要はありません。反対に、エラーの意味を調べても直せない、処理の順番を設計できない、質問の相手がいないため数週間止まる、といった状態なら、指導を受ける価値を比較できます。
「Pythonが学べる」という案内だけでは、Excel自動化の目的に合うかは分かりません。機械学習中心の講座、Web開発中心の講座、業務データを扱う講座では、練習する内容が異なります。自分の課題に必要な.xlsxの読み書きやファイル処理を扱うか、カリキュラムで確認してください。
Python Winnerの公式案内では、動画や演習と個別指導を組み合わせた学習、Pythonやデータ分析に関するコースが紹介されています。教材内でコードを書ける環境の案内もあります。ただし、今回のExcel課題をそのまま添削してもらえることや、職場の独自帳票を扱えることまで公開情報だけでは断定しません。
検討しやすい人は、Pythonの基礎からデータを扱う処理まで学び、つまずきを個別に相談したい人です。別の学習先も比較したい人は、特定のExcel操作だけを短く学びたい人や、自分でエラーを解決して練習を進められる人です。申込前の確認点は、対象コース、Excelファイルを扱う演習の有無、持ち込み課題の相談範囲、質問方法、必要なPC環境です。
料金は対象コースによって確認すべき条件が変わるため、広告に出ている一つの金額だけで決めないようにします。総額、受講期間、教材や環境の追加費用、支援の終了時期を同じ条件で見積もります。制度適用後の金額がある場合も、自分が対象と確認できるまでは、支払う金額がその額になるとは判断できません。
| 学び方 | 選びやすい状況 | 先に確認すること |
|---|---|---|
| 公式資料と独学 | 小さな課題を自分で試せる | 疑問を調べる時間を確保できるか |
| Excel操作の単科教材 | 学ぶ処理が具体的に決まっている | 実行環境と扱うファイル形式が合うか |
| 個別指導のあるPython講座 | 基礎理解や課題設計で繰り返し止まる | 自分の疑問が質問対象に含まれるか |
無料カウンセリングを利用するなら、今回のような小さな課題と、分からなかった箇所を持っていきます。「Excelを自動化できますか」だけでなく、「列を読み、条件で選び、別名保存する処理を自分で作れるようになりたい」と伝えると、学習範囲の違いを確認しやすくなります。無料相談と有料受講の契約は別です。
広告:個別指導で扱える課題と学習範囲を確認する → 【PythonWinner】![]()
相談前には、Python Winnerを検討するときの確認点と、スクールの無料相談で聞く質問も確認できます。最初の課題で何が不足したかを言葉にしたうえで、受講料に対して必要な支援がそろうかを判断しましょう。
よくある疑問を整理し、次に増やす機能を一つ決める
最初の課題を終えたら、すぐに複数ファイルの一括処理へ広げるより、入力チェックか出力の読みやすさのどちらか一つを改善します。列名を確かめる、処理対象の件数を表示する、見出しを固定するなど、小さい変更で構いません。一度に多く変えると、結果が変わった原因を追いにくくなります。
Excel以外のデータも学びたい人は、社会人向けのPython・CSV分析の始め方で、表を読み、集計し、説明する練習へ進めます。今回の.xlsxの操作を理解した後に進むと、ファイル操作と集計処理の役割を分けやすくなります。
仕事で継続して使う段階では、誰が入力を用意し、誰が出力を確認し、失敗したとき誰が対応するかも決めます。自分のパソコンで一度動くことと、担当者が変わっても使えることは別の到達点です。学習中はまず、処理の条件と確認方法を説明できる成果物を一つ残してください。
よくある質問
Q. プログラミング未経験でもExcel自動化を独学できますか?
小さな表を読み、条件で選び、別名で保存する課題から始められます。変数・条件分岐・繰り返しを処理と結び付けて学び、保存後の結果まで確認しましょう。必要な時間には個人差があります。
Q. openpyxlとpandasのどちらから学べばよいですか?
セルやシートの読み書きを理解したいならopenpyxl、表の整形や集計を中心に学びたいならpandasが候補になります。この記事の小さな.xlsxの練習では、openpyxlだけを使います。
Q. 元のExcelファイルに保存しても大丈夫ですか?
最初は元ファイルを守り、別の保存先を使ってください。openpyxlの保存は既存ファイルを上書きするため、同名ファイルの確認が必要です。図形などの要素を含む帳票は、保存後に必要な内容が残るかも確認します。
Q. 数式の結果はPythonで自動的に再計算されますか?
openpyxl自体は数式を評価しません。data_only=Trueも再計算の指定ではなく、保存されている値を読む設定です。数式を含む業務では、計算と結果の確認をどの環境で行うかを決めてください。
Q. スクールに相談するのは、どの段階がよいですか?
小さな課題を試し、止まった処理を説明できる段階なら、必要な支援を確認しやすくなります。Excelの演習範囲、持ち込み課題への対応、質問方法、総額、学習環境を確認してから選びましょう。