業務の隙間を埋める技術メモ。

「それ、作れるか?」より 「それ、作って大丈夫か?」を考えたい。 業務で“ちゃんと使える”かどうかを、 実際に手を動かして確かめたログを残しています。

予算表と実績データをつなげてみた話 〜PythonとPower Platformで「合ってないところ」が見えるようになった〜

正直な出発点

予算と実績は、たぶん完全には合わない

予算表と実績データを扱っていると、
最初からこう思ってました。

  • どうせ全部は合わない

  • 部門も科目もズレる

  • 最後は人が直す

なので今回も、

きれいに一致させることは目標にしない

という前提で始めました。

やりたかったのはただ一つ。

「合ってないところが、すぐ分かる状態」にする


Before:

何が合ってないのか、毎回探していた

これまでの作業はこんな感じ。

  1. 予算Excelを開く

  2. 実績データを開く

  3. VLOOKUPがズレる

  4. 「どこが合ってない?」を目で探す

  5. 気づいたら30分経過

一番つらいのは、

合ってない“理由”がすぐ分からない

ことでした。


今回のテーマ

「自動で合わせる」より「ズレを可視化する」

今回の方針はこれ。

  • 合うところは機械に任せる

  • 合わないところは“印をつける”

  • 判断は人がやる

DXっぽいことは、
正直ほとんどしてません。


全体構成(シンプル)

SharePoint
  ├ 予算表(Excel)
  └ 実績データ(CSV / Excel)
        ↓
Power Automate
        ↓
Python(紐づけ・判定)
        ↓
比較用Excel(色付き)

Power Platformは
「置いたら回る」だけ。

工夫したのは、出力結果のほうです。


Pythonでやったこと(今回の肝)

① まずは普通につなげる

merged = budget_df.merge(
    actual_df,
    on=["部門", "科目"],
    how="left",
    indicator=True
)

ここで使ったのが
indicator=True

これで、

  • 両方にある

  • 予算だけある

  • 実績だけある

が区別できるようになりました。


② 「合ってない理由」を列として出す

ここが一番やってよかったところ。

def judge_status(row):
    if row["_merge"] == "both":
        return "OK"
    elif row["_merge"] == "left_only":
        return "実績なし"
    else:
        return "予算なし"

merged["判定"] = merged.apply(judge_status, axis=1)

これでExcel上に、

  • OK

  • 実績なし

  • 予算なし

という列が一つ増えます。

👉 ここを見れば、どこでズレてるか即分かる


③ 差額だけじゃなく「未紐づけ」も数値化

merged["実績"] = merged["実績"].fillna(0)
merged["差額"] = merged["予算"] - merged["実績"]
  • 実績が0なのか

  • そもそも無いのか

判定列と合わせて見ると、
意味が全然違って見えるようになりました。


Excel側で“見るだけで分かる”工夫

Pythonで出したExcelに、
ちょっとだけ仕込みました。

  • 判定が「実績なし」 → 行を薄赤

  • 判定が「予算なし」 → 行を薄黄

  • OK → 何もしない

細かい説明は不要で、

開いた瞬間に「ここ見て」って分かる

これだけで、
確認作業が一気に楽になります。


実際に回してみて

最初に出てきたExcelを見たとき、

「あ、探さなくていい」

と思いました。

  • 合ってるところは流し見

  • 色がついてるところだけ見る

  • 理由も列に書いてある

見る順番が自然に決まるのが大きかったです。


合ってないところが見えると、会話が変わる

面白かったのはここ。

「ここ合ってないですね」で終わらずに、

  • この科目、予算の切り方おかしくない?

  • 部門コード、そろそろ整理する?

  • 来月はルール追加する?

という話になる。

前は
合わせる作業が目的だったので、
この話に行く前に疲れてました。


Power Platformを使った意味

Pythonだけで回してたら、
多分こうなってました。

  • 実行が面倒

  • いつのデータか分からない

  • 属人化する

Power Platformに載せたことで、

  • ファイル置くだけ

  • 毎回同じ流れ

  • 「とりあえず回す」が軽い

この軽さが、
「ズレを見る」作業と相性がよかったです。


うまくいかなかったところ

もちろん課題もあります。

  • 科目名が完全に別物だと拾えない

  • 粒度が違うとズレ続ける

  • 例外ルールが増えすぎると辛い

ただ、

どこがダメかはすぐ分かる

ようになったので、
対応の判断は早くなりました。


まとめ:やってみた結論

  • 予算と実績は、完全には合わない

  • でも 合ってない場所が分かるだけで十分

  • 探す時間が減ると、考える余裕が出る

今回やったのは、

自動化というより、可視化

でもこの可視化、
始めてから3か月ほど過ぎたけど、毎月ちゃんと効いてます。