ショウのプログラミング教室

【脱・手作業】PythonでExcelを操る!面倒な「転記・計算」を3秒で終わらせる魔法のコード

こんにちは、ショウです。

これまでの記事では、天気予報アプリやAmazon価格監視ツールなど、Web上のデータを扱う方法を紹介してきました。

でも、皆さんが普段一番パソコンで触っているソフトって、Webブラウザ以外だと**「Excel(エクセル)」**ではありませんか?

「これ、ロボットがやってくれないかな…」と思ったことがある方。

それ、Pythonなら一瞬です。

今回は、Pythonを使って**「Excel作業を全自動化する第一歩」**を踏み出してみましょう。これができるようになると、本業の残業が減るだけでなく、ココナラなどで「Excelマクロ・自動化案件」を受けられるようにもなりますよ!


1. なぜVBA(マクロ)ではなくPythonなのか?

Excelの自動化といえば「VBA(マクロ)」が有名ですが、私は断然Pythonをおすすめします。

  1. 書きやすい: VBA独特の古い記述より、Pythonの方がシンプルで読みやすいです。
  2. Excel以外とも連携できる: 「Webからデータを取ってきてExcelに貼る」「Excelの内容をLINEに送る」といった連携はPythonの得意技です。
  3. 汎用性が高い: 覚えたスキルは、そのままAI開発やWebアプリ開発に応用できます。

2. 事前準備:ライブラリのインストール

PythonでExcelを操作するための最強ライブラリ**「openpyxl(オープンパイクセル)」**を使います。

黒い画面(ターミナル/コマンドプロンプト)で以下のコマンドを入力してください。

Bash

pip install openpyxl

3. 今回やること:「売上リストの計算と装飾」を自動化

練習として、以下のような単純作業をPythonにやらせてみます。

【元データ (sales.xlsx)】

商品名と単価、個数だけが入っているリストがあります。

A列 (商品名)B列 (単価)C列 (個数)D列 (合計)
りんご1005(空欄)
みかん5010(空欄)
バナナ2003(空欄)

【やりたい処理】

  1. D列に「単価 × 個数」の合計金額を計算して入れる。
  2. 合計金額が「1000円」を超えたら、文字を**「赤色の太字」**にする。
  3. 別名(sales_done.xlsx)で保存する。

これを手作業でやると面倒ですが、Pythonなら一瞬です。


4. 実装コード

まずは、テスト用のExcelファイル(sales.xlsx)がないと始まらないので、**「テスト用Excelを作るプログラム」「自動処理するプログラム」**の2つを用意しました。

手順①:テストデータを作る

以下のコードをコピーして create_data.py として保存し、実行してください。

(すでに手元にExcelファイルがある人は飛ばしてもOKですが、練習のために実行することをおすすめします)

Python

import openpyxl

# 新しいExcelブックを作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "売上リスト"

# ヘッダーを作成
ws.append(["商品名", "単価", "個数", "合計金額"])

# データを追加
data = [
    ["りんご", 100, 5],
    ["みかん", 50, 20],   # 合計1000
    ["バナナ", 200, 3],
    ["ぶどう", 500, 3],   # 合計1500(1000超え)
    ["メロン", 3000, 1]   # 合計3000(1000超え)
]

for row in data:
    ws.append(row)

# 保存
wb.save("sales.xlsx")
print("テスト用ファイル(sales.xlsx)を作成しました!")

実行すると、同じフォルダに sales.xlsx が生成されます。

手順②:自動化処理を実行する

ここが本番です。excel_automation.py という名前で保存して実行してください。

Python

import openpyxl
from openpyxl.styles import Font, PatternFill

# 1. ファイルを読み込む
file_name = "sales.xlsx"
wb = openpyxl.load_workbook(file_name)
ws = wb.active # アクティブなシート(一番手前のシート)を選択

# 2. データを1行ずつ見ていく (2行目から最終行まで)
# iter_rowsを使うと、指定した範囲の行を順番に取ってこれます
for row in ws.iter_rows(min_row=2, max_row=ws.max_row):
    # A列=0, B列=1, C列=2, D列=3 というインデックスになります
    item_name = row[0].value # 商品名
    price = row[1].value     # 単価
    count = row[2].value     # 個数
    
    # 計算処理:単価 × 個数
    total = price * count
    
    # 計算結果をD列(4列目)に書き込む
    # row[3] はD列のセルを指します
    row[3].value = total
    
    # 3. 条件付き書式(装飾)の設定
    if total >= 1000:
        # 1000円以上なら「赤色の太字」にする
        row[3].font = Font(color="FF0000", bold=True)
        print(f"{item_name} は {total}円 なので強調しました。")

# 4. 別名で保存する
output_file = "sales_done.xlsx"
wb.save(output_file)
print(f"処理完了! {output_file} を確認してください。")

5. 実行結果を確認しよう

プログラムを実行した後、新しくできた sales_done.xlsx を開いてみてください。

たったこれだけのコードで、「読み込み・計算・判断・書式設定・保存」がすべて完了しました。


6. 応用:これが何の役に立つ?

「たった5行なら手でやったほうが早くない?」と思いましたか?

確かに5行ならそうです。でも、これが**「毎日届く1万行のファイル」**だったらどうでしょう?

Pythonを使えば、行数がどれだけ増えても処理時間は数秒です。

実際の活用シーン:


まとめ

今回はPythonを使った「Excel自動化」の基礎を紹介しました。

Webアプリを作るのも楽しいですが、Excel操作のような**「目の前の面倒な作業」**を解決できることこそ、プログラミングの最大のメリットかもしれません。

「この作業、毎月やっててしんどいな…」というExcelファイルがあれば、ぜひPythonに任せることに挑戦してみてください。驚くほど時間が余るようになりますよ!


あわせて読みたい記事:


編集後記

ちなみに、クラウドソーシングサイトでは「Excelデータを指定のフォーマットに変換するツール作成」といった案件が、5,000円〜数万円で募集されています。

今回のコードに「複数のファイルを結合する処理」を加えれば、それだけで副業案件に対応できるレベルになっちゃいます。夢がありますよね!

モバイルバージョンを終了