Pythonでデータ照合ツールを作ってみた

Python Python

先日こちらの記事でPythonのコードを実行ファイル化(exe化)する方法をご紹介しました。その記事の公開をTwitterでつぶやいたところ、「試してみたいけど適当なコードがナッシング」的なリプライを頂き・・・ナッシングとか書くと私の年齢がバレますねw

しかし、こんな風に反応を頂けるのはすごく嬉しいものです!そこで、自分のトレーニングも兼ねてちょっと便利なツール(というほど大袈裟なものではありませんが)を作ってみたのでコードを公開します。色々応用が利くと思うので、お役に立てば幸いです。

サンプルの概要

2つのファイルの中身を突合させるような状況、割とありがちではないでしょうか?たとえば…


  • 売掛金と入金のデ ータを突き合わせる
  • 顧客名簿とコンタクト履歴を突き合わせる
  • 登録した内容と申請された内容を突き合わせる

今回のサンプルは一つ目の売掛金と入金のデータ突合をイメージして作りましたが、システムで処理しきれない作業や特別にピックアップが必要なデータの選別といった状況は他にもたくさんありそうです。

実行環境

例によってWindows10 64bit(バージョン2004)、Pythonは3.6.1です。

下準備

売掛金を管理するブック「管理台帳.xlsx」と入金を管理する「入金台帳.xlsx」を作成します。

管理台帳はA列からC列までの3列構成で、順に「管理番号」「売掛先」「金額」を入力します。A列の値は重複しないように注意してください。

管理台帳.xlsx

入金台帳は4列構成でA列から順に「入金日」「売掛先」「管理番号」「金額」です。A列の型は標準のままだとPythonで取り込む際にシリアル値として扱われ見にくくなるので、日付の演算は行いませんから文字列にしておくのが良いと思います。

入金台帳

Pythonのコード

冒頭でimportするのはos、pandas、openpyxlですが、他にxlrdも必要です。足りないものはあらかじめpipで揃えておきましょう。

それでは下記のコードを「sample-code.py」として保存してください。間違っている部分や「こうした方が良いよ」的な部分はお知らせ頂けると嬉しいです。

200行を超えていますが、数えてみたら100行はコメントでした。VBAでも同じことは実現できますが、Pythonの方がスッキリしています(個人の感想です)。

実行してみよう!

コマンドプロンプトを起動したら「python」に続き半角スペースを入れ、sample-code.pyをドラッグアンドドロップしてEnterキーを押下しましょう。

画面の指示に従って管理台帳.xlsxをドラッグアンドドロップしてEnterキー押下、入金台帳をドラッグアンドドロップしてEnterキーを押下するとデスクトップに「未入金一覧.xlsx」が作成されますので中身を確認します。

未入金一覧.xlsx

E~H列の入金データをもとにB~D列の売掛金をチェックし、塗りつぶされなかったものが未入金になります。また、I列には売掛金と入金金額の差異を出力していますので、振込手数料を相殺された、そもそもの振込金額がまちがっている…といったデータを簡単に見つけることが出来ます。このサンプルのように数件であれば目検でも問題無いのですが、これが数十~数百になると・・・考えたくもないですね。しかし、Pythonでコードを書いておけば一瞬で終わり、いつでも何度でも利用できるのです。

こういったものをPyInstallerでexe化すると配布が容易になります・・・がPyInstallerをご紹介した記事の趣旨でした。折角なのでexe化してみましょう!

pyinstaller C:\Users\sandambara\Desktop\sample-code.py --onefile

このsample-code.pyはコンソールを使って作業するので「–noconsole」を付けないようにしましょう。

皆さんもご自慢のツール配布にぜひお役立てください!

コメント