PythonによるExcel転記(コピー)自動化の基礎

Excelでの転記(コピー)は、もはや人がやってはいけない仕事です。
PythonでExcelでの転記を自動化する方法をまとめてみました。

※PythonとExcel by Leitz Phone 1

PythonでExcelを扱う設定

Pythonの初期設定はこちらを参考にしていただければ。

PythonでExcelを使うには、ライブラリといういわれるアプリのようなものをインストールする必要があります。
Excelを扱うライブラリには複数ありますが、転記(コピー)なら、openpyxlが便利です。

WindowsならWindows PowerShell、Macならターミナルで、
pip install open pyxl
と入れ、インストールしましょう。

これで準備完了です。

 

Excelの転記の基礎

今回の事例は、このようなファイルです。
人ごとに経費精算書があり、

 

このうち、「尾崎」さんの金額を、この集計表へ

 

に転記します。
人間なら、
・コピーして貼り付け
・数式を入れる
という方法を使うでしょうが、手間もかかりますし、めんどくさいですし、ミスの可能性もあります。

ここで、Excelの構造について改めて確認しておきましょう。
Excelは、ブック(ファイル)→シート(シート)→セルという構造です。

Excelの数式を使って、転記するなら、
=尾崎!E6
となります。
これはシート名・セル番地を表示したものです。

本来は、さらにブック名(ファイル名)がつき、
=[経費精算書.xlsx1]尾崎!E6
となります。
これをPythonでも使うのです。

自動化するには、Excelマクロ(VBA)という方法もありますが、今回はPythonでやってみます。

 

PythonによるExcel転記の基礎

Pythonでは次にように書きます。

#ライブラリの読み込み
import openpyxl

# ワークブックの読み込み
wb=openpyxl.load_workbook(r'C:\Users\info0\Dropbox\0 INBOX\経費精算書.xlsx' ,data_only=True)

# データの転記
wb['集計']['b2'].value = wb['尾崎']['e6'].value

# 保存
wb.save(r'C:\Users\info0\Dropbox\0 INBOX\経費精算書.xlsx')

 

まず、ライブラリopenpyxlを読み込みます。
これでopenpyxlの機能が使えるようになるのです。
なお、1行目の#からはじまるものは、コメントで、自由に書くことができます。
Python側でも読み取りません。

次に、対象のExcelファイル(ワークブック)を読み込み、wbという変数(箱)に入れます。
wb = ○
で、wbという変数に○を入れるという意味です。

wb = openpyxl.load_workbook(△)
で、△というファイル名のワークブックを読み込みます。
△は、Windowsならエクスプローラー、MacならFinderからコピーしましょう。
頭に、rをつけておくと、問題なく読み込めます。

その後ろにある、data_only=Trueは、値のみ読み込むという意味です。
今回の転記では、値のみ転記すればいいので、こう指定します。
そうでないと、数式をそのまま転記してしまうからです。

次にデータを転記します。
○ = △
で、「○に△を入れる」という意味です。
ここでは、シート「集計」のセルB2にシート「尾崎」のセルE6を入れるので、
wb['集計’]['b2’].value = wb['尾崎’]['e6’].value
と書きます。
Excelの数式と同様、ブック・シート・セルという構造です。

最後に、Excelファイルを保存します。
Pythonの場合
・最後にExcelを保存
・対象のファイルを閉じた状態で実行しなければいけない
というルールがあるのです。

Excelマクロだと、このようなことはなく、プログラム実行後の経過や実行結果を目で見ることができます。

サンプルはこちらからダウンロードできます。

EX-ITサンプル_Excel転記.py

EX-ITサンプルPythonExcel転記経費精算書.xlsx

 

なお、ブック内のシートすべてのデータを転記するということも当然可能です。
こういうことを自動化するのがプログラミングの魅力ですので。
別途記事にする予定です。

Pythonを勉強するだけだとなかなか身につかないことが多いので、よく使うExcelで実践してみましょう。

 



■編集後記
昨日は、Kindle本を中心に。

ディズニープラス(動画配信)が10月27日から4Kになるとのこと。
うれしいかぎりです。
値段はちょっと上がりますが、ありかなと。
さらには、ドコモアカウント以外から契約できるのも大歓迎。
めちゃくちゃ使いにくいのでドコモアカウント……。
ドコモとかNTTとかJRとか、システム回りは古くさいです。
共通点があるので。

1日1新Kindle『1日1新』Instagram『1日1新』
Switch 大逆転裁判1・2

■娘(4歳5ヶ月)日記→Kindle『娘日記』
お医者さんごっこでは、注射をすぐかつ、3本ほど打ってくれます。
自分は、注射嫌いなのに……。
「これが治りますから」と。
のども診てくれ、「赤くなってますね」と。
いろいろ覚えています。