LoginSignup
1
5

More than 1 year has passed since last update.

月初エクセル集計処理を完全自動化し、100人日掛かっていた作業を一秒で処理した話。【完成版】

Last updated at Posted at 2021-06-19

Githubに、全コード(Phase1~Phase3)をアップしております。
Github → https://github.com/Revolution2021/Auto_Calc_program
(尚、pz31.pyの19行目のメールアドレス部分だけを本物に差し替えれば動作します。)

下記に、本プロジェクトの全体像を記載します。


営業情報を元に、顧客別に請求金額を確定した上で(Phase1)、報告書を記載し(Phase2)、その報告書をメール送信する(Phase3)と言う一連の処理を完全自動化するプログラム開発に成功した。
必要なスキルは、主に、Python OpenpyxlとWin32com。

■処理の説明
あなたは、本作業を行う担当者とする。

1)あなたには、各月の製品ごとの顧客別販売記録が、下記の様な.csvファイルで、営業担当者から送付されてくる。(この例では、9社の購入情報データがあったと仮定)

=====================================
XXA12345612_monthly_20210601.csv
XXA34567821_monthly_20210601.csv
XXB23456734_monthly_20210601.csv
XXC36754355_monthly_20210601.csv
XXE56789030_monthly_20210601.csv
XXF12345622_monthly_20210601.csv
XXF12345855_monthly_20210601.csv
XXH34567877_monthly_20210601.csv
XXX12678910_monthly_20210601.csv
=====================================

2)
各.csvファイルは下記の様に記載されている。(それぞれのファイルでは、数百行から数千行の販売データが記録されている。尚、この例では、製品AとBの価格は同一とする。)
0620a.jpg

3) 
下記の様な集計表を、一瞬で作成したい。(プログラム開発前は、20人日程度は掛かっていた。実際には、.csvファイルの数はもっと多かった為。)
0620b.jpg

4)
尚、同じ製品でも、O社に販売する時と、P社に販売する時は価格が異なる。
また、Q社には、何個販売しても、弊品1個当たりの価格は不変であるが(つまり、Volume Discountは効かない。)、R社では、例えば、1000個までは単価500円だが、1001個以上は単価480円となり、5000個以上は単価400円となる様な、変則的な価格が適用される。
(それをLadder Priceとここでは呼ぶ。)

5)
顧客リストとLadder Pirce適用状況、及び顧客別単価は、添付の”client list.xlsx”に記載している。

<Phase2>
上記Phase1の3)で作成したエクセルシートを元に、下記の様な報告書を自動作成する。
尚、報告書に記載する顧客は、4)で述べた、Ladder Priceを適用している顧客だけとする。
==============================
Mr. Tomas、

Hi, This is Jane.

Billing charge to each client of previous month(2021/05)is as below.

XXA12345612 : Tokyo co. unit number 28187 x price/unit 400 USD = Total_price 11,274,800 USD

XXA34567821 : Hong Kong Co. (Contract A) unit number 28187 x price/unit 320 USD = Total_price 9,019,840 USD

XXB23456734 : Oosaka co. unit number 32511 x price/unit 200 USD = Total_price 6,502,200 USD

XXE56789030 : Guam Co. unit number 68995 x price/unit 500 USD = Total_price 34,497,500 USD

Regards
=======================

<Phase3>
上記Phase2で作成した報告書を、メールで自動送信する。
今回は、メーラーはOutlookを使用したが、GmailやYahooメールでも、コードはほぼ同じである事を確認済。

■ プログラム説明
処理手順Phase1の3)に記載したSummary Sheetを自動作成するプログラム構成
image.png

処理手順Phase2に記載したメール本文を自動作成するプログラム構成
image.png

処理手順Phase3に記載したメール(Outlook)を自動送信するプログラム構成
image.png

■ 実行ファイル設置例(御参考)
0620d.jpg

■ 実行ファイル記載例

=======================
@rem .csvファイルのあるフォルダに移動
cd C:\Users\user_xxx\Documents\Auto_Calc_program

@rem 存在しているprocess.pyをrun
python process_final.py

@rem 存在しているprocess2.pyをrun
python process_final2.py

python pz31.py
@REM (for text copy to outlook)

start Outlook

@REM (Outlook Active)

python pz32.py
@REM (Click F9 key for sending email)

============================

以上です。

1
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5