Excel加工をしてくれるコードをChatGPTに書かせてみた。

**ChatGPTを使ってExcel自動加工のコードを書かせてみた。**
-
どこにでも共通する課題としてExcel加工があると思います。もう切っても
切れない縁と言っていいでしょう。当然私が所属している部署にもあります。
色々なパターンがあり、今回の案件だけではありません、もっとたくさん
あります。
***
今回取組んだのは、物流の平準化に合わせた対策に端を発しています。
物流の2024年問題対応として、波動を吸収し毎日納品する物量を平準化
させようという取組の一環です。その為に事実の可視化というところで
素データを元に他のマスターデータと紐付けて曜日別数量や納品リードタイム
別数量をExcelで加工し集計表を作成するというものです。この一連の作業を
ChatGPTに聞きながらPythonでコードを組みました。
***
ノーコードで完成させたかったのですが、やはり複雑なExcel加工となると
やはりプログラミング言語が必要。ExcelVBAという手法もあるのですが、
より汎用性の高いPythonでコーディングしました。（少し知識もあったし）

**最終アウトプットがこれ**
-
![WS000022.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/9357b927-7d43-e4c7-f311-1a7c83a8f5f8.jpeg)
![WS000023.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/50f07711-a6bf-d8b3-66bd-b29d47ed358e.jpeg)
数値が出せなくて申し訳ないです。
自動加工されたものが新しいExcelワークシートに抽出されました。

**取組んだフロー**
-
基本的にpandasを使っています。pandasは、プログラミング言語Pythonにおいて、データ解析を支援する機能を提供しているライブラリです。ExcelファイルやCSVファイルも読み取ります。
1. 所定のフォルダより必要なCSVファイルを全て抽出する。
2. 抽出したCSVファイルを合体させる。（縦方向に)
3. 日付が文字列となっているので日付型に変換する。
4. "部門マスタ"、"取引先マスタ"データをmergeする。（Excelで言うところのVLOOKUP関数）
5. 新たな列を追加する。（ある列からある列を引いた数字を表示させる列）
6. pivot_table関数を用いて画面上に表示させる。（Excelのpivot_table関数と機能は同じ）
7. 出来たものを新規Excelワークシートにアウトプットさせる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/3166066a-32c7-81c4-506c-c3deb253fa78.png)
この間わずか1分以内。もしこれをExcel加工で作っていたら、どんなに作業に
慣れていても数十分。mergeが出来なければ1日かかっても終わらないでしょう。

**ではフローを順に追ってみます。**
-
**1.所定のフォルダより必要なCSVファイルを全て抽出**
**2. 抽出したCSVファイルを合体させる。（縦方向に)**
下記がそのコードになりますが、私が入力したのは"import pandas as pd" の部分だけ。
（せっかく勉強したのに記憶が全て飛んで行ったー）
後は、全てChatGPTが書いたコードです。それをそのまんまコピペしただけ・・・。!
![WS000014.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/1d27934e-c9a8-4245-e920-e26c9739f34f.jpeg)
**3. 日付が文字列となっているので日付型に変換する。**
**4. "部門マスタ"、"取引先マスタ"データをmergeする。（Excelで言うところのVLOOKUP関数）**
**5. 新たな列を追加する。（ある列からある列を引いた数字を表示させる列）**

:::note info
Pythonに限らずプログラミングで大事な事は、**変数の定義**です。
これは実際にコードを書いみて失敗しないと理解出来ません。
:::

![WS000015.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/cad82abe-5a05-b854-037f-d9357af69635.jpeg)
Excel加工する際に、余計なデータもたくさんあるので必要な列を残して新しいデータ
フレームを作るのはどうしたらいいかChatGPT先生に素直に聞きました。
全部は映せてないですが、言われた通りにコーディングしました。
![WS000016.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/3e8c6881-405a-fe69-16db-474f8e7a9532.jpeg)

:::note info
pandasでは、Excelのようにオートフィルターで抽出したデータだけが、そのまま
ワークシート上に残っているという事はありません。オートフィルターで抽出した
データを別のデータフレーム名で定義する事が必要になります。
:::
**6. pivot_table関数を用いて画面上に表示させる。（Excelのpivot_table関数と機能は同じ）**
納品リードタイム別に数量が表示されています。（画面上は何も見えませんが・・・）
![WS000017.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/c9b525dd-25f7-1bc8-3296-19caf5a15a13.jpeg)
上の表は完成フローですが、その過程でエラーが出ました。そんな時こそChatGPTの
出番です。エラー内容を丸ごとコピペして下記図のように、”エラー内容と対策を教えて”
と丸投げすればいいのです。
**余談**
今はChatGPTがあるからいいが、少し前ならどれだけエラーに震え上がったか・・・。
その度に当てのないネットサーフィンに出て答えを求めに・・・。
![WS000019.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/c61038ad-252e-648b-66f1-0fdfaeeca52e.jpeg)
もう一つのデータフレームも画面上で表示されました。
![WS000020.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3484232/57c6e594-714e-932a-0e70-f69f3a5ecec7.jpeg)

**最後に**
-
ChatGPTの存在は世の中に知れ渡る前から、エンジニアをしている息子たちから名前
は聞いていた。その時は「ふーん」と聞き流したが、まさかここまでのものとは思わず
知れば知るほどその秘められた可能性に恐怖しました。これはこれからも世の中を席巻し
これまでの常識を覆す力があると思います。今はとにかくその力を最大限使っていこう
と思う所存です。

余談
上記の取り組みによって大幅に時間が浮いた分に関しては、本取組み以外にも色々とExcel
書式のPythonコード組みを実施しました。しかし今のところ、私個人としての業務効率と
なってしまっているところに大きな課題がある。そこが改善されてこその組織としての効果
です。後、プライベートではmakeで組んで、ChatGPTのモジュールを使い、画像生成して
私自身のInstagramに自動で投稿するというフローを作ってみました。その出来栄えに
自分でも驚きましたが、この力を今後も使わない手はないですね。