Categories: Python

[Python]Excelファイルの比較プログラムを作ってみた

どうもーASN48です。

今回はPythonを使ってある課題を解決したので、その方法を書いていきます!

解決したい課題

  • バーコードの数字一覧を取得しバーコードを生成
  • 生成したバーコードを印刷
  • 取得したバーコードの数字一覧と印刷したバーコードで比較
  • 比較した結果、順序違い・重複・欠番が無いことを確認

という課題を課せられました。(自分営業なんだよな・・・こんなの現場の仕事じゃ・・・)

こちらも数量が少なければ、1枚ずつ確認していけばいいんですけど15,000件となると膨大な作業になってしまいますからね・・・


「スポンサーリンク」

 

前提条件

今回の課題解決にあたって下記の環境条件があります。

  • バーコードの数字一覧はExcelファイルで取得
  • 生成されたバーコードをハンドスキャナーで読み取りExcelで出力可

こちらのハンドスキャナーに関しては、スマホの無料アプリでも対応可能なことを確認しております。

ではさっそくいってみましょう!

プログラムコード

import openpyxl as px

filepath = "バーコード参照.xlsx" #任意のファイル名
wb = px.load_workbook(filename=filepath)
h = 1

ws3 = wb["Sheet3"] #任意のシート名

lastrow = ws3.max_row

for i in range(2, lastrow + 1):
    kensu = 0
    base = ws3["A" +str(i)].value

    if not base is None:
        for j in range(2, lastrow + 1):
            hikaku = ws3["D" + str(j)].value
            if base == hikaku:
                kensu += 1

        ws3["B" + str(i)].value = kensu

for k in range(2, lastrow + 1):
    kensyutu = ws3["B" +str(k)].value
    if not kensyutu is None:
        if kensyutu == 0:
            h += 1
            ws3["F" + str(h)].value = ws3["a" + str(k)].value
            ws3["G" + str(h)].value = "欠番"
        if kensyutu >= 2:
            h += 1
            ws3["F" + str(h)].value = ws3["a" + str(k)].value
            ws3["G" + str(h)].value = "重複"

for l in range(2, lastrow + 1):
    syutoku = ws3["D" + str(l)].value
    master = ws3["A" + str(l)].value
    if master == syutoku:
        ws3["E" + str(l)].value = "一致"
    if master != syutoku:
        ws3["E" + str(l)].value = "順序違い"

wb.save("kekka.xlsx") #結果を出力する任意のファイル名

こちらになります。何度も修正・追加をしたので、あまりキレイなコードではありませんが・・・

こちらの「バーコード参照.xlsx」の内容です。

バーコード参照.xlsx

件数が多すぎるので、テスト用データです。実際には15,000件で実行しております。

マスターデータ→取得したバーコード数字一覧

スキャンしたデータ→スキャナーでバーコードを読み取ったデータ

となっております。


「スポンサーリンク」

 

実行

実際にプログラムを実行します。

こちら実行結果を「kekka.xlsx」という名前のExcelファイルを生成します。

kekka.xlsx

実行結果は異常なしです!!

次にエラーとなったケースを想定して実行します。

ケース1 1件欠番があった場合

kekka.xlsx

下2桁「14」が欠番となり、順序もそこからずれていることがわかります。ですので 下2桁「14」 を印刷して追加することで解決できます。

ケース2 重複があった場合

kekka.xlsx

下2桁「16」「17」「18」「19」の4つが重複していることがわかります。ですので 下2桁「16」「17」「18」「19」の4つ を破棄することで解決できます。

ケース3 並び順が変わってしまった場合

kekka.xlsx

途中から並び順が変わっていることがわかります。しかし重複や欠番は無いので並び替えをすることで解決できます。


「スポンサーリンク」

 

このような形でなんとか課題をクリアすることができました!

こちらのプログラムですが、少し内容を変更すればもっと他のことにも対応できるかと思います。

最後まで読んで頂きありがとうございます。

少しでも何かのきっかけとなれば幸いです!

ではアデュー。

asn48

福島県在住。1989年(平成元年)生まれの男です。 色々なことに興味を持って多趣味ですが、飽きやすく冷めやすい性格。 ブログについては、ゆるーく好きな時に好きなことを書いていきたいと思い始めてみました。よろしくお願い致します。

Share
Published by
asn48

Recent Posts

世界樹の迷宮1 HD REMASTER part1

どうもーASN48です。 つい…

12か月 ago

ついにゲーミングPC買ったぜ!!!

どうもーASN48です。 つい…

1年 ago

世界樹の迷宮X 三人旅 社畜が世界樹へ挑む 一覧

この三人パーティで難易度ヒロイ…

2年 ago