Pythonを使うと、Excel仕事を効率化することが可能です。
効率化できる操作は多岐にわたりますが、分かりやすいところで言えば以下のような作業を自動化できるのです。
・読み込み
・データ処理
・書き込み
・グラフ化
・ウェブスクレイピング
・PythonでExcelマクロ実行(VBA)
・Excelの印刷設定
しかし上記のような作業ができると言われても、具体的にどのようにPythonを仕事に応用すればいいのか迷ってしまうことは少なくありません。
そこでPythonとExcelを仕事で活用していく方法を事例をまじえながら紹介していきます。
目次
PythonでExcel操作を自動化するライブラリ|openpyxl, pandas, xlwings
Pythonではライブラリを使ってExcel操作を実行します。
ライブラリにはいくつかの選択肢が存在します。
私が使うのは以下の3つです。
1. openpyxl
2. pandas
3. xlwings
実際には上記のライブラリ以外にもExcel操作のライブラリは存在します。
しかし今のところ、上記の3つで問題ないと判断しています。
その理由も含めて上記の3つの特徴について紹介していきます。
ライブラリ1|openpyxl
openpyxlはExcel操作で最も使い勝手の良いライブラリです。
なぜならウェブに多くの情報が紹介されているからです。
ウェブで調べながらPythonプログラムを作っていく人も多いはず。
実際、私がopenpyxlをメインで使っている理由は、ウェブでの公開情報の多さです。
xlwingsを推奨する声もありますが、xlwingsは英語の文献は多いですが、日本語での情報量の多さはopenpyxlが多い。
そのため、現時点では私はopenpyxlを使用しています。
しかし、使い勝手が悪い部分もあります。
たとえば、「セルの値が数式のとき、その数式を取得してしまう」ことが挙げられます。数式の計算結果を取得できないのです。
「=sum(A1:A10)」と入力されていれば、「100」や「200」といった計算結果ではなく、「=sum(A1:A10)」をそのまま取得してしまう。
Pythonを書いていれば分かりますが、これはメンドウです。
他にもopenpyxlではExcelマクロを実行が難しいです。
このような弱点もありますが、現時点ではopenpyxlはExcel操作において優秀なライブラリです。
ライブラリ2|pandas
pandasはデータ処理を行うライブラリです。
本記事後半でもpandasを使用してエクセルを結合したり、グラフ化前のデータ処理を行っています。
pandasによる処理はopenpyxlを駆使すればできないことはありません。
しかし、Pythonを使う人の多くはExcelだけを操作するわけではないでしょう。
それこそ機械学習や統計解析を行う場合も想定されます。
そのような場合、pandasを使えるようになっておいた方が圧倒的に便利です。
またpandasはウェブで多くの情報が紹介されているので、操作に困ることも少ないです。
以上を鑑みてExcel操作において、特にデータ処理にはpandasを活用することをオススメします。
ライブラリ3|xlwings
xlwingsというライブラリはopenpyxlと類似のExcel操作を行うためのライブラリです。
結論から言うと、この記事ではxlwingsを使用する事例は紹介していません。
しかしxlwingsを使用する場合もあります。
というのも、xlwingsはPythonとVBAを連携させることができるからです。
VBAとの連携という観点から見ると、今後はxlwingsがメインになっていく可能性は十分に考えられます。
ただopenpyxlの情報量が多いので、現時点ではopenpyxlをメインで使っているが、xlwingsに移行する可能性もあるというのが私の結論です。
PythonでExcelを操作するメリット|VBAとの比較
Pythonでエクセル操作を3つのメリット
メリット2|効率化できる作業の幅が広い
メリット3|将来性がある
メリット1|WindowsでもMacでもExcel作業がラクになる
MicroSoft Officeを使用している人なら、Excel VBAによるマクロで作業を効率化できます。
実際、私ももともとはExcel VBAから勉強を始めた人間です。
しかしExcel VBAには弱点があります。
windowsの場合なら問題なくプログラムが動くのですが、Macの場合ではExcel VBAを使えないことがあるのです。
ただPythonを使えば、MacでもVBAでExcelを含めたMicrosoft Officeを操作する作業も効率化可能。
WindowsとMacで全く同じプログラムで動くわけではありませんが、大きな修正なしでwindowsPCとMacPCでプログラムを使いまわすことも可能です。
このようにPythonを使えば、MacでもExcelを含めたMicroSoft Office作業を効率化できるのがメリットの一つです。
メリット2|効率化できる作業の幅が広い
Pythonは効率化できる作業の幅が広いです。
なぜならPythonではライブラリが豊富だからです。
たとえばPythonを使えば、MicroSoft OfficeとGoogleアプリを連携させることができます。
「GoogleスプレッドシートのデータからOutlookでメール送信」、「Google ChromeからスクレイピングしたデータをExcelに書き出す」といったことが可能になります。
このように作業効率化の幅が広いのが、Pythonを使う魅力の一つです。
メリット3|将来性がある
言っては悪いですが、VBAは応用できる道が狭いです。
たとえばVBAはMicrosoft Officeの操作を効率化するのがメインです。
しかしPythonを使うと、機械学習からウェブアプリまでカバー可能です。
当然、機械学習やウェブアプリを作成できるようになるには勉強と実践が必要になりますが、VBAだけを使っている人にはそのような可能性すらありません。
そのように考えるとPythonを学ぶこと自体に将来性があると言えます。
Pythonでエクセル操作をデメリット
デメリット1|Pythonをインストールしないといけない
大企業でよくあるのですが、Pythonをセキュリティ上、インストールできない場合があります。
もはやデメリットではなく、Pythonを使用する際のカベと表現する方がいいのですが、Pythonを使うことを情シスチームと交渉しないといけない可能性があります。
幸いなことに、私が働いてきた会社ではPythonインストール可能でしたので、このカベに悩まされたことはありませんでした。
一部の人はそもそもPythonを使えない場合があるので、会社で使えることを確認しておくことをオススメします。
VBAとPythonの違い
Excel作業を効率化する方法は、Pythonだけではありません。
VBAを使うことでExcel作業を効率化することもできます。
しかしPythonとVBAの選択肢があるが故に、どちらを学べばいいのか悩んでしまうことも少なくありません。
そこで、PythonとVBAの違いについて紹介していきます。
違い2. PythonとVBAのプログラム
違い3. PythonとVBAの学習
違い4. PythonとVBAの転職
違い5. PythonとVBAの副業
以下で詳しく紹介していますので、興味がある人はご覧ください。
VBAとPythonはどっちを学ぶべき?
これからプログラミング言語を勉強しようとしている人の中には、VBAとPythonのどちらを勉強すればいいのか分からない人もいるはずです。
結論から言えば、VBAがオススメと考えています。
・しかし、会社で勉強しながらスキルアップできる点でVBAに軍配
・VBAをある程度使えるようになったら、Pythonを学ぶ
以下で詳しく紹介していますので、興味がある人はご覧ください。
PythonでExcel操作するための準備|ライブラリをインストール
準備1|openpyxlモジュールのインストール
1. コマンドプロンプトを起動(ショートカットキー[windows] + [R])
2. 「cmd」と記入して[Enter]
3. 「pip install openpyxl」と入力して[Enter]
4. インストール完了
これでインストールが完了し、openpyxlを使えるようになります。
準備2|pandasモジュールのインストール
1. コマンドプロンプトを起動(ショートカットキー[windows] + [R])
2. 「cmd」と記入して[Enter]
3. 「pip install pandas」と入力して[Enter]
4. インストール完了
これでインストールが完了し、pandas使えるようになります。
準備3|xlwingsモジュールのインストール
1. コマンドプロンプトを起動(ショートカットキー[windows] + [R])
2. 「cmd」と記入して[Enter]
3. 「pip install xlwings」と入力して[Enter]
4. インストール完了
PythonでExcel操作を自動化する事例
この記事では以下の事例について紹介していきます。
超入門として、Excel関数をpythonで作る事例を紹介します。
Pythonで関数を作るわけではなく、countif関数やvlookup関数の挙動をPythonプログラムで実現していくことを目指します。
それぞれのエクセル関数の挙動が分かっていると、pythonの組み立て方が分かるので、初心者にはオススメです。
1. Pythonでエクセルsum関数を作ってみる
2. Pythonでエクセルif関数を作ってみる
3. Pythonでエクセルcountif関数を作ってみる
4. Pythonでエクセルcountifs関数を作ってみる
5. Pythonでエクセルsumif関数を作ってみる
6. Pythonでエクセルsumifs関数を作ってみる
7. Pythonでエクセルvookup関数を作ってみる
基礎として、Excelだけの操作で完結する事例を紹介します。
1. Excelでデータ集計
2. PythonでExcelデータを別シートへ転記
3. PythonでExcelデータを転記して新しいファイルに保存
4. PythonでExcelのシートを複数削除
5. Excelのセルの色を変更する
6. Pythonで複数フォルダを自動作成
7. Pythonでフォルダ内のファイル名を取得
8. フォルダ内のExcelを一つに結合する
9. Excelのデータを月別かつ製品別にグラフを自動作成
Excelと他の操作を組み合わせる応用事例を紹介します。
1. Excel×Outlookでリストへ個別メールを連続送信
2. ウェブスクレイピングしてExcelへ書き出す
3. Excelの顧客データからWordの差し込み印刷(PDF化)する
4. Excelのデータから請求書(PDF)を自動作成する
5. CSVを処理してChatworkへデータを通知
6. Python×Excel×Slack|週ごと集計結果をメッセージ自動通知
その他に知っておくとトクする処理をその他として紹介します。
1. Excelのデータ処理(Pandasを使って処理)
2. PythonでPDFテキストを読み込みExcel変換して一覧化
3. PythonでRPA風にパソコンを操作
4. PythonでVBAを実行
5. ExcelからPythonを呼び出す
6. Excelに設置したボタンでPythonを呼び出す
以下で各事例を紹介していきます。
Python×Excel|エクセル操作の事例|超入門
1. Pythonでエクセルsum関数を作ってみる
2. Pythonでエクセルif関数を作ってみる
3. Pythonでエクセルcountif関数を作ってみる
4. Pythonでエクセルcountifs関数を作ってみる
5. Pythonでエクセルsumif関数を作ってみる
6. Pythonでエクセルsumifs関数を作ってみる
7. Pythonでエクセルvookup関数を作ってみる
超入門7例. エクセル関数をPythonで作ってみる
Pythonを使うとExcel作業を効率化することができます。
Pythonによるエクセルの作業自動化は多岐にわたりますが、最初でつまづいてしまう人も多いです。
つまづいてしまう理由の一つに、いきなり難しい内容にチャレンジしてしまうことがあります。
そこで、エクセル関数という馴染みのある内容を題材にして、Pythonを学んでいく方法を紹介します。
上記の記事では以下の内容を紹介しています。
1. エクセルSUM関数をOpenpyxlで作成(最終行まで自動計算)
2. エクセルIF関数をopenpyxlで作成(条件に一致で文字を赤くする)
3. エクセルCOUNTIF関数をopenpyxlで作成(条件に一致する件数をカウント)
4. エクセルCOUNTIFS関数をopenpyxlで作成(2条件に一致する件数をカウント)
5. エクセルSUMIFS関数をopenpyxlで作成(条件に一致する値を合計)
6. Python×Excel|2条件で合計算出(SUMIFs関数をopenpyxlで作る)
7. vlookup関数でマスタデータ取得をopenpyxlで作成
エクセル関数の動きをpythonで作るというのは、実務では現実的ではありませんが、初心者が勉強するのは打ってつけ題材です。
興味がある人はぜひ勉強の参考にご活用ください。
Python×Excel|エクセル操作の事例|基礎
1. Excelでデータ集計
2. PythonでExcelデータを別シートへ転記
3. PythonでExcelデータを転記して新しいファイルに保存
4. PythonでExcelのシートを複数削除
5. Excelのセルの色を変更する
6. Pythonで複数フォルダを自動作成
7. Pythonでフォルダ内のファイル名を取得
8. フォルダ内のExcelを一つに結合する
9. Excelのデータを月別かつ製品別にグラフを自動作成
基礎1. Excelでデータ集計
Pythonを使えば、上記の画像のとおりデータ集計を自動化できます。
ちなみに単純にデータ集計を行うだけならば、エクセルのピボットテーブルの機能を使えば十分に事足ります。
それではなぜこのような事例を紹介しているかというと、他のプログラムを組み合わせると威力を発揮するからです。
たとえば、他のアプリケーション(ウェブ情報など)のデータをExcelに書き出して、データ集計まで一括して実施したいときがあります。
実際、本記事の後半でヤフオクのデータをExcelに書き出す事例を紹介しています。
ヤフオクのデータを取得し、そのデータを集計するまで自動化したいときに組みあわせるのです。
このように事例を上手く組み合わせて、改善効果を高めることが可能です。
そのような視点で、勉強してみるともっと良くなるはずです。
基礎2. PythonでExcelデータを別シートへ転記
Excel仕事の中には、データを転記するものがあります。
たとえば、エクセルでフィルターをして別シートにコピペしていく作業です。
このような作業はPythonでカンタンに自動化できます。
しかも手作業ではないため、ミスなしで作業を完了できます。
ぜひ参考にしてみてください。
基礎3. PythonでExcelデータを転記して新しいファイルに保存
これは事例2を新しいファイルに転記するパターンに変えたものです。
事例2は別シートへのコピペだったのですが、事例3では新しいファイルにコピペします。
転記先が変わってもPythonで対処可能なので、事例2と合わせてお役立てください。
基礎4. PythonでExcelのシートを複数削除
Pythonを使えば、上記の画像のとおりシートを削除可能です。
当然、ただ単純にシートを削除するだけなら、手作業でも問題ありません。
それではなぜこのような事例を紹介しているかというと、他のプログラムを組み合わせると威力を発揮するからです。
たとえば、毎日のデータをシート別に分けてExcelで管理しているとします。
そうすると、とある週の先週分のシートをまとめて削除したいこともあるでしょう。
その際に、シートをまとめて削除し、新しいシートを作成するような作業があるかもしれません。
このように事例を上手く組み合わせて、改善効果を高めることが可能です。
ぜひご活用ください。
基礎5. Excelのセルの色を変更する
エクセル作業をしていると、セルに色を付けたいときがあります。
たとえば未入力のセルに目印をつけたり、値が基準を満たしていないときにアラートをだしたりします。
Pythonを使うと、Excelのセルの色を変更することができます。
当然、複数の条件で複数のセルを同時に処理をして、色を付けることが可能です。
以下の記事では、その事例を紹介しています。
基礎6. Pythonで複数フォルダを自動作成
仕事をしていると、大量のフォルダを作成することがあります。
しかし大量フォルダを手作業で作成するのはメンドウですし、名前の入力ミスが発生してしまうものです。
そこでPythonを使って大量のフォルダを自動作成します。
以下の記事では、Excelに入力しておいた内容をもとにフォルダを自動作成する事例を紹介しています。
このプログラムを使えば、10コや20コのフォルダなら数秒で作成できます。
たとえ100コを超える数のフォルダも簡単に作成できます。
エクセルとフォルダの作業は組み合わせると威力を発揮するので、この事例を通じて組み合わせ方を学んでみるのは今後役立つはずです。
基礎7. Pythonでフォルダ内のファイル名を取得
Pythonを使うとフォルダ内の全てフォルダやファイル名を取得して一覧にすることができます。
これは下位フォルダの内のファイルも含めて取得可能です。
使用用途としてはファイル名を検索したり、フォルダ整理をしたりするときに使うなどがあります。
以下の記事で、フォルダ内の全てのファイル名を取得してエクセルへ出力するプログラムを紹介します。
基礎8. フォルダ内のExcelを一つに結合する
フォルダ内に保存されているエクセルファイルを一つに集約する作業をPythonでやっていきます。
たとえば複数の拠点のデータを一つにまとめて、処理をしたいときに使えます。
この事例ではpandasというデータ処理のライブラリを使います。
また複数のエクセルファイルの中で、条件に合致するファイルのみを取得して結合していきます。
プログラムそのものは短くシンプルなので、ぜひご活用ください。
基礎9. エクセルのデータを月別かつ製品別にグラフを自動作成
仕事をしていると、エクセルのデータを集計してグラフ化することがあります。
しかしデータを一つずつ手作業でやるのはメンドウですし、入力ミスが発生してしまうものです。
そこでPythonを使ってグラフ作成を自動化します。
以下の記事では、Excelに入力してあるデータ(400件程度)から月別かつ製品別に複数のグラフを自動作成する事例を紹介しています。
記事の事例では4つのグラフを自動作成していますが、データが増えても範囲を自動で読み込んでいくつでもグラフを作成可能です。
データ解析とグラフ化作業はルーティン作業なので、自動化できれば大いに役立つはずです。
Python×Excel|エクセル操作の事例|応用
1. Excel×Outlookでリストへ個別メールを連続送信
2. ウェブスクレイピングしてExcelへ書き出す
3. Excelの顧客データからWordの差し込み印刷(PDF化)する
4. Excelのデータから請求書(PDF)を自動作成する
5. CSVを処理してChatworkへデータを通知
6. Python×Excel×Slack|週ごと集計結果をメッセージ自動通知
応用1. Excel×Outlookでリストへ個別メールを連続送信
Pythonを使うとエクセルのデータを読み込み、メールを個別送信することができます。
以下の記事では、顧客リストへ個別にメールを通知するプログラムを紹介します。
しかしただ単純にメール送信するだけではもったいないので、ファイルを添付したり配信停止の顧客へ通知を控えたりすることも同時に行います。
以下でプログラムも含めて詳しく紹介していきます。
応用2. ウェブスクレイピングしてExcelへ書き出す
Pythonのウェブスクレイピングに関するウェブ情報は、数多く紹介されています。
しかし、ちょっとモノ足りないと感じることがあります。
なぜなら実例を使ったプログラムがあまり紹介されていないからです。
そこで、この記事ではYahooオークションのデータをPythonで取得することにしました。
以下でプログラムも含めて詳しく紹介していきます。
応用3. Excelの顧客データからWordの差し込み印刷(PDF化)する
Excelの顧客データをもとにWordに差し込み印刷(PDF化)していく処理を紹介します。
この処理を使うと、テンプレートとなるwordファイルを準備すれば、あとは自動で住所や氏名などを挿し込み(置換)してくれます。
以下でプログラムも含めて詳しく紹介していきます。
ちなみに、このプログラムと事例9のOutlook送信プログラムと組み合わせることで、差し込み印刷で作成したPDFをOutlookに添付してメール送信することも可能です。
応用で紹介している事例をさらに組み合わせることで、より自動化の幅を広げることができます。
ぜひチャレンジしてみてください。
応用4. Excelのデータから請求書(PDF)を自動作成する
Pythonを使ってExcelデータから請求書PDFするプログラムを紹介します。
実務をもっとにした事例で請求書を自動作成するPythonプログラムを紹介していきます。
請求書のようなルーティン作業を自動化できると、仕事がかなりラクになります。
以下でプログラムも含めて詳しく紹介していますので、興味がある人はぜひ勉強してみてください。
応用5. CSVを処理してChatworkへデータを通知
Pythonを使うことのメリットの一つに、計算処理を行うライブラリが充実していることがあります。
この事例でも使用しているPandasというライブラリを使うことで、短いコードで大量データの計算が可能です。
ここでは例として、CSVファイルの処理を行った例を紹介します。
上記の記事では、CSVファイルを読み込んで、解析したデータをChatworkに送信するPythonのプログラムを紹介しています。
応用6. Excel×Slackで自動投稿
Pythonを使うとSlackにチャットを自動投稿することができます。
たとえば、売上の集計結果をPythonに毎週通知する作業があったとします。
この作業を手動で毎週実施するのはメンドウです。実際、計算間違いをしてしまったり、忘れてしまったりするものです。
そこで、Pythonを活用することで、作業自動化を行います。
以下の記事では集計プログラムと組み合わせて、データ集計を行ったExcelをSlackに通知するプログラムを紹介します。
Python×Excel|エクセル操作の事例|その他
1. Excelのデータ処理(Pandasを使って処理)
2. PythonでPDFテキストを読み込みExcel変換して一覧化
3. PythonでRPA風にパソコンを操作
4. PythonでVBAを実行
5. ExcelからPythonを呼び出す
6. Excelに設置したボタンでPythonを呼び出す
その他1. Excelのデータ処理(Pandasを使って処理)
Pythonを使うメリットの一つにデータ処理のPandasを使えることがあります。
データ解析はExcelの機能で十分といえば、十分です。
Excel関数やピボットテーブルを使えば、データ処理は満足いくものを実行可能です。
それではPandasを使ったデータ処理のメリットは何かというと、豊富なライブラリと組み合わせることができる点です。
たとえば、機械学習のような高度な処理につなげることができます。
他にも、ウェブスクレイピングした結果をそのままPandasで解析することで、一気通貫で処理を実行できる点も魅力的です。
そこで、以下の記事でPandas×Excelの処理事例を紹介します。
その他2. PythonでPDFテキストを読み込みExcel変換して一覧化
Pythonを使うとPDFのテキストデータを読み込んでExcelに一覧にすることが可能です。
ここでは実務の事例として、PDFをもとにExcelに書き込んでいくPythonプログラムを紹介します。ただしプログラムの性質上、欠点もあります。
以下で詳細を紹介しています。
その他3. PythonでRPA風にパソコンを操作
Pythonを使うとパソコン操作を自動化することができます。
たとえば社内のシステムにエクセルデータを入れ込む作業を実行することができるのです。
以下の記事ではpyautoguiやpyperclipを使いながら、Excel仕事をRPA的にパソコンを動かし、システムへデータ登録していきます。
なおあくまでRPA的な動きをするのであって、本記事で紹介している内容は正確なRPAの定義を満たすものではありません。
その他4. PythonでVBAを実行
PythonからExcelマクロVBAを実行したりExcelからPythonを実行したりすることは可能です。
しかしopenpyxlではなくxlwingsを使う必要があります。
なぜならopenpyxlではExcelマクロ実行したり、ExcelからPythonを実行したりできないからです。
以下で紹介しています。
その他5. ExcelからPythonを呼び出す
エクセル操作中に、Pythonを実行したいときがあります。
実はPythonでExcelを操作するライブラリのなかで、xlwingsであればそれが可能です。(OpenpyxlはVBAを実行することは難しい)
以下の記事では、エクセルからPythonプログラムを実行する方法について紹介していきます。
その他6. Excelに設置したボタンでPythonを呼び出す
Xlwingsのライブラリを使うと、エクセルに設置したボタンからPythonを実行することが可能です。
Pythonをエクセルのボタンから呼び出せると、効率化の幅が広がるので、興味がある人は試してみてください。
Pythonについて詳しく理解したいなら
Pythonを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にPythonを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
Pythonで出来ること
Python×PDF
Python×フォルダ操作
Googleアプリを自動化したいならPythonよりGAS
GoogleスプレッドシートやGmailの作業を自動化したい場合は、実際の業務ではGAS(Google Apps Script)を活用したほうが便利な場面があります。
たとえば私が実際にGASを活用して効率化してきた作業は以下の動画で解説しています。
動画を見てみると、あなたの仕事にどのようにGASを応用すればいいのかイメージが浮かぶこともあると思います。
さて上記の動画などを通じて、GASを使って何ができるのかを理解しておくことと実務の効率化に役立ちます。
なぜならGASの使い所を知っておくと、あなたの業務の何をGASで自動化できるかイメージを掴めるからです。
実際、仕事でどう活用するかをイメージしないまま学んでも、効果的な学習はできません。
以下の記事では、GASで出来ることだけではなく、プログラムソースも紹介しています。
興味がある人は以下の記事もご覧ください。
ぜひご覧ください。
GASの使い方・始め方を知らない場合はこちらがオススメ
PythonだけではなくGASも便利かもしれないと感じたのであれば、ぜひ以下の記事をご覧ください。
10分程度でGoogle Apps Scriptを使うためのスタート地点に立てるように解説をしています。
Pythonの難易度
Pythonの難易度などについては、以下で紹介しています。
勉強の参考になれば幸いです。
Pythonを勉強したい人へ
Pythonを勉強する方法はいくつかあります。以下で紹介していますので、興味がある人はご覧ください。
VBAで出来ること
Excel VBAで出来ることも紹介していますので、以下のページからご覧ください。