Python × Excel 業務効率化シリーズ #1 ─毎日の定型作業を"3つの魔法"で自動化しよう!
こんにちは!今回は、Excel業務の自動化についてお話しします。「プログラミング」と聞くと難しそう...と思われる方も多いと思いますが、実は私たちが普段行っているExcel作業と同じ考え方でできるんです!
なぜ今、Excel業務の自動化なのか?
みなさんは、こんな経験はありませんか?
毎日同じような単純作業に追われている
大量のデータ処理でミスが心配
「作業時間を短縮したい」けど方法が分からない
実は、これらの悩みは「Pythonによる自動化」で解決できます!
自動化の基本は「3つの魔法」
プログラミングの世界では、複雑な作業も3つの基本的な「魔法」で実現できます。
1️⃣ 第一の魔法:順次処理(順番に作業を進める魔法)
🌟 例えば...営業部の田中さんの場合
田中さんは毎日こんな作業をしています:
売上データのExcelを開く
各商品の消費税を計算
新しいファイルとして保存
これを自動化すると...たったこれだけ!
import pandas as pd
# Excelを開く(普段マウスでクリックしている作業)
売上データ = pd.read_excel('4月売上データ.xlsx')
# 消費税計算(普段の計算作業)
売上データ['税込金額'] = 売上データ['売上金額'] * 1.1
# 保存(普段の保存作業)
売上データ.to_excel('4月売上データ_税込.xlsx')
2️⃣ 第二の魔法:選択処理(条件で作業を変える魔法)
🌟 例えば...経理部の鈴木さんの場合
鈴木さんはお客様の売上金額によって対応を変えています:
100万円以上 → 大口顧客として特別対応
50万円以上 → 中規模顧客として通常対応
それ以下 → 小規模顧客として簡易対応
これを自動化すると...
def 顧客区分判定(売上金額):
if 売上金額 >= 1000000:
return '大口顧客'
elif 売上金額 >= 500000:
return '中規模顧客'
else:
return '小規模顧客'
# お客様ごとに自動で判定
顧客データ['顧客区分'] = 顧客データ['売上金額'].apply(顧客区分判定)
3️⃣ 第三の魔法:反復処理(同じ作業を繰り返す魔法)
🌟 例えば...営業企画部の佐藤さんの場合
佐藤さんは毎月末にこんな作業を:
全支店の売上ファイルをチェック
それぞれの合計と平均を計算
結果をまとめる
これを自動化すると...
def 支店売上集計():
# すべての支店のファイルを自動で処理
for ファイル in glob.glob('支店売上_*.xlsx'):
データ = pd.read_excel(ファイル)
# 自動で集計
合計 = データ['売上金額'].sum()
平均 = データ['売上金額'].mean()
# 結果を保存
集計結果 = pd.DataFrame({
'売上合計': [合計],
'売上平均': [平均]
})
集計結果.to_excel(f'{ファイル}_集計.xlsx')
🎯 自動化で得られる4つの魔法の効果
⚡️ 作業時間の劇的短縮
1時間→数分へ
空いた時間で価値の高い業務へ
🛡️ ミスのない正確な処理
人間の入力ミスをゼロに
計算間違いの心配なし
📊 完璧な一貫性
誰が実行しても同じ結果
品質の標準化が実現
🔄 簡単な再現性
過去の作業を正確に再現
作業手順の可視化
さいごに:自動化への第一歩
「プログラミングは難しそう...」
そう思われた方も多いのではないでしょうか?でも、実は普段のExcel作業と同じ考え方でできるんです。
最初の一歩として、自分の定型作業を3つの魔法に分解してみましょう:
どんな順番で作業しているか?(順次処理)
どんな場合分けをしているか?(選択処理)
どんな作業を繰り返しているか?(反復処理)
この整理ができれば、もうあなたはプログラミング的思考の入り口に立っています!
🎯 選択・反復処理で使える「演算子の技」
📊 比較演算子:データを比べる技
Excelでフィルターをかけるように、Pythonでも様々な条件でデータを比較できます。
よく使う比較演算子
# 等しい(=)
if 部署 == '営業部':
print('営業部のデータです')
# 等しくない(≠)
if 支払状態 != '完了':
print('未払いがあります')
# より大きい(>)
if 売上金額 > 1000000:
print('目標達成!')
# より小さい(<)
if 在庫数 < 100:
print('発注が必要です')
# 以上(≧)
if 取引年数 >= 5:
print('優良顧客です')
# 以下(≦)
if 欠品率 <= 0.01:
print('品質基準クリア')
🔄 論理演算子:条件を組み合わせる技
複数の条件を組み合わせて、より詳細な条件分岐ができます。
よく使う論理演算子
# かつ(AND)
if 売上金額 >= 1000000 and 取引回数 >= 10:
print('VIP顧客です')
# または(OR)
if 支払遅延 == True or 与信スコア < 60:
print('要注意先です')
# ではない(NOT)
if not 入金確認:
print('入金が確認できていません')
💡 実践例:条件を組み合わせた顧客分析
def 顧客ステータス判定(顧客データ):
# 取引金額と取引回数の条件を組み合わせる
if 顧客データ['年間取引金額'] >= 10000000 and 顧客データ['取引回数'] >= 12:
return 'プレミアム顧客'
elif (顧客データ['年間取引金額'] >= 5000000 or 顧客データ['取引回数'] >= 6) and not 顧客データ['支払遅延あり']:
return 'ゴールド顧客'
else:
return 'レギュラー顧客'
# 全顧客データに適用
顧客リスト['ステータス'] = 顧客リスト.apply(顧客ステータス判定, axis=1)
✨ 演算子を使いこなすコツ
シンプルに始める
最初は単純な条件から
徐々に条件を追加していく
条件の優先順位を意識
重要な条件を先に
例外処理は後に
テストを忘れずに
極端なケースでも動くか確認
予期しない入力値にも対応
次回は、実際のライブラリについて、より具体的にお話ししていきます。「いいね」「フォロー」をお願いします。