働き方改革の中、Excelを自動化して、作業効率を上げていきたい方も増えていると思います。
私もその一人で、今回は名著「Excel×Python最速仕事術」を読んでみました。
なぜVBAではなく、pythonで自動化するのか…
この本を読んで、実際にスクリプトを書いてみましたが、その答えは、pythonは記述が簡単だというところにありそうです!
そのため、「Excel×Python最速仕事術」は、
- 時間をかけずにExcel作業を自動化したい人
- 簡単なRPAに取り組んでみたい人
- PythonでのExcel操作に興味はあるけど、手は付けられていない人
への入門書としておススメの一冊です。
Excel×Python最速仕事術の概要
この本の大筋:
- ビジネス現場にありがちな事務作業を題材に
- サンプルコードを数行ずつ丁寧に説明しながら
PythonでのExcel操作の方法について解説してくれています。
Excel操作には、openpyxl
という外部ライブラリを使用しています。
openpyxl
には公式ドキュメントもありますが…
- 全文英語
- 実例紹介は限定的
です…。
一方、Excel×Python最速仕事術は、実例に沿ったサンプルコードがあります。
そのため、サンプルを修正すれば、時間をかけずにExcel自動化までたどり着けます。
全体の構成
次のような構成です:
- pythonの基本解説
- Excelからデータ抽出・集計
- 書式設定
- グラフ化
- pdf出力
Pythonの文法については必要に応じて解説する程度にとどまり、Excel操作の話が中心です。
対象のレベル
サンプルコードが充実しており、Python初心者でも取り組める内容だと思います。
特にPythonは他のプログラミング言語に比べて非常に書きやすいので、
- ノンプログラマーの人
- 事務系でプログラミングとは縁のなかった人
- VBAで挫折したけど自動化はしてみたい人
にもおススメしたいです。
ただし、この本ではPythonの基本文法については、体系的に解説しているわけではない点に注意です。
Pythonの文法をもっと学びたい人は、他の本も必要です。
業務の自動化に興味があるのであれば、「退屈なことはPythonにやらせよう」がちょうどいいと思います。
できるようになったこと
サンプルコードを通して、Pythonでの基本的なExcel操作が可能になりました。
今回、学んだことをもとに:
- Excelからのデータ収集
- Pythonでのデータの加工・整理
- Excelへの出力
- グラフの作成
を行ってみます。
次のように、注文されたラーメンの種類が記載されたExcelデータを考えてみます。
まず、必要なライブラリをimport
してExcelファイルを開きます。
# ライブラリのインポート
import pathlib
import openpyxl
# Excelを開く
path = pathlib.Path("excel_python_example_input.xlsx")
wb = openpyxl.load_workbook(path)
sheet = wb.active
Excelファイルのデータを、ラーメンの種類ごとに集計してみます。
source_list = ['しお', 'しょうゆ', 'みそ']
data = [0, 0, 0]
#B2から列方向にデータを集計
for rows in sheet.iter_rows(min_row=2, min_col=2, max_col=2):
for cell in rows:
# セルの値がソース名と一致したらデータを+1する
for i, source in enumerate(source_list):
if cell.value == source:
data[i] += 1
# Excelからのデータ集計完了
print(source_list)
print(data)
# ['しお', 'しょうゆ', 'みそ']
# [2, 3, 5]
収集結果を別のExcelファイルに出力してみましょう。
wb = openpyxl.Workbook()
sheet = wb.active
# ヘッダーの出力
sheet["A1"].value = "種類"
sheet["B1"].value = "注文数"
# データの出力
for i in range(len(source_list)):
row_num = i+2
sheet["A"+str(row_num)].value = source_list[i]
sheet["B"+str(row_num)].value = data[i]
# 最後に保存
wb.save("excel_python_example_output.xlsx")
下図のようなExcelファイルが作成されました。
ここでは書式は設定していませんが、書籍内では書式の設定方法も紹介されています。
最後に棒グラフを作成してみます。
# 必要なクラスのインポート
from openpyxl.chart import BarChart, Reference
# グラフ化するデータの選択
height = Reference(sheet, min_col=2, max_col=2, min_row=1, max_row=4)
labels = Reference(sheet, min_col=1, max_col=1, min_row=2, max_row=4)
# グラフオブジェクトの作成と設定
chart = BarChart()
chart.type = "col"
chart.title="ラーメン集計結果"
chart.x_axis.title = "ソースの種類"
chart.y_axis.title = "注文数"
chart.add_data(height, titles_from_data=True)
chart.set_categories(labels)
sheet.add_chart(chart, "C5")
# 最後に保存
wb.save("excel_python_example_output.xlsx")
次のようなグラフが作成されます。
書籍の中にはサンプルコードがあるので、意外と簡単にスクリプトが書けました。
データ収集、集計、グラフ化を何十、何百と行う場合には自動化の恩恵は大きいですね。
所要時間
私の場合は、普段からPythonを使用していることもあり全体で約4~5時間でした。
これでExcel操作ができるようになるのであれば、費用対効果は良いと思います。
おススメの勉強の仕方
これはこの本に限ったことではないのですが、限られた時間の中で効率よくプログラミングの勉強をするためのおススメの方法です。
- 通勤・通学時間などの隙間時間に各章をざっと読む
- PCに向かって、実際にスクリプトを書きながら学習
「ざっと読む」のと「スクリプトを書く」で、同じ章を2回学習します。
同じ章を2回も勉強して、効率が悪そうですが、繰り返すことで記憶の定着を促します。
また、プログラムの勉強で問題となるのは時間の確保です。
ある程度まとまった時間がないと、スクリプトは書けませんが、それを言い訳にしてやらないことが最悪です。
そこで、移動時間など隙間時間は内容の理解にあてて、時間をとれたらしっかりスクリプトを書きながら勉強します。
隙間時間と集中時間をうまく使い分けるのがポイントかと思います。
おわりに
「Excel×Python最速仕事術」の感想をまとめました。
pythonは記述が簡単だというところがポイントになるのだと思います。
- 時間をかけずにExcel作業を自動化したい人
- 簡単なRPAに取り組んでみたい人
- PythonでのExcel操作に興味はあるけど、手は付けられていない人
への入門書としておススメの一冊です。
この本をキッカケに、Excelの自動化・RPAに取り組んでみてはいかがでしょうか?
気になった方は、Amazonのレビューもチェックしてみてください。
けっこうレビューが充実していて、購入前の参考になりました!
Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。
気楽にツイートしているので、気軽にフォローしてください!