• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • タイプ
    • 日記
    • 読書
    • 買物
    • ドラフト
    • 記事
    • まとめ
  • トピック
    • PCスマホ
    • 金融
    • 家事子育
    • 働き方
    • メンタル
    • ブログ
    • 未分類
    • 作業標準化
    • ドラム
    • 生活
    • リストアップ
    • その他

金融系エンジニア日記

金融系エンジニアがいろいろなものをテクノロジーで効率化する備忘録

現在の場所:ホーム / 未分類 / Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない

Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない

はじめに

Excelでデータを扱うとき、こんな作業をしていませんか?

  • VLOOKUPで別シートから値を引く
  • XLOOKUPで検索して値を取得する
  • 複数条件になると式がどんどん長くなる

これ、全部ちゃんとできているので問題はありません。
特にXLOOKUPはかなり優秀です。

ただ結論だけ先に言うと👇

👉 その作業、DataFrameを使うと「一度書くだけ」で終わります


まず前提:XLOOKUPは優秀(でも限界あり)

XLOOKUP はとても便利です。

=XLOOKUP(A2, A:A, B:B, "見つからない")
  • 列番号不要
  • 左も右も検索できる
  • エラー時の値も指定できる

👉 VLOOKUPの弱点はほぼ解消されています

なので👇

👉 単発作業ならXLOOKUPで十分です


でも現場ではこうなる

ケース:複数条件で検索したい

やりたいこと

「商品ID」と「日付」の両方が一致するデータを取得したい


Excelでの対応(ちょっと無理やり)

XLOOKUPで複数条件

=XLOOKUP(A2&B2, Sheet2!A:A&Sheet2!B:B, Sheet2!C:C)

何をしているか

  • 商品IDと日付を結合
  • 疑似的に複数条件検索

正直なところ

  • 式の意味が分かりにくい
  • データが増えると重い
  • 日付フォーマット違いで事故る

👉 「できるけど、ちょっと無理してる」状態


DataFrameならこうなる(シンプルすぎる)

# ファイル名: dataframe_multi_key_lookup_v001.py
# pip install pandas openpyxl

import pandas as pd  # pandasを読み込む

# 売上データ
df_sales = pd.read_csv("sales.csv")  # 売上データ

# マスタデータ
df_master = pd.read_csv("master.csv")  # マスタデータ

# 商品ID + 日付で結合(これがVLOOKUP/XLOOKUPの代わり)
df = pd.merge(
    df_sales,
    df_master,
    on=["商品ID", "日付"],  # 複数条件をそのまま指定
    how="left"
)

# Excelとして出力
df.to_excel("output.xlsx", index=False)

何がすごいのか

① 書き方がそのまま意味になる

on=["商品ID", "日付"]

👉 「この2つで一致」がそのまま書ける


② 無理やりテクニックが不要

Excel👇
👉 文字連結で対応

DataFrame👇
👉 標準機能


③ ミスが減る

  • 範囲指定ミスなし
  • 式崩れなし
  • コピペ不要

④ 大量データでも強い

👉 数万行でも普通に処理できる


⑤ 一度書けばずっと使える

👉 毎回関数を貼る必要なし


そして一番大事なこと

👉 最後はExcelに戻せる

df.to_excel("output.xlsx", index=False)

つまり👇

  • 処理はPythonで自動化
  • 確認はExcel

👉 今の業務フローは変えなくてOK


Excel vs DataFrame(リアルな違い)

項目Excel(XLOOKUP)DataFrame
単発作業◎△
複数条件△◎
可読性△◎
ミス防止△◎
自動化×◎

結論

  • VLOOKUP → 正直つらい
  • XLOOKUP → かなり優秀
  • DataFrame → 作業そのものを消す

最後に

もし今👇こうなら

  • XLOOKUPを毎回使っている
  • 複数条件で悩んでいる
  • 同じ作業を繰り返している

👉 それはサインです

「関数で頑張るフェーズ」は終わりで、
「自動化するフェーズ」に入るタイミングです。


最初の一歩

import pandas as pd

df = pd.read_csv("data.csv")
df.to_excel("output.xlsx", index=False)

👉 「Excelを開く前に、Excelが完成している世界」になります。

The following two tabs change content below.
  • この記事を書いた人
  • 最新の記事
Twitter のプロフィール

ストレスフリー

うつ病の子育て中の金融系システムエンジニアです。 名もなき家事、目的のない仕事、見えない不自由、チリツモストレスを見つけ出して、設備投資、システム化、見える化により、解決します。 習い事で、ドラムをしていました。
Twitter のプロフィール

最新記事 by ストレスフリー (全て見る)

  • Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない - 2026-03-20
  • PythonでOracle接続にハマった話(64bit問題とtnsnames.oraの落とし穴) - 2026-03-20
  • Android Studio Panda 2(2025.3.2)をインストールしてみた - 2026-03-20

共有:

  • X で共有 (新しいウィンドウで開きます) X
  • Facebook で共有 (新しいウィンドウで開きます) Facebook

いいね:

いいね 読み込み中…

最初のサイドバー

Googleでサイト内検索

固定ページ

  • このサイトについて
  • ストレスから自由になる日記のホームページ
  • ストレスから自由になる日記の投稿ページ
  • 新着投稿一覧

最近のコメント

  • パスワード入力が必要な認証付きプロキシの内側のLANでmattermostクライアントとVisua lStudioCodeを使う に iloveadachi より
  • パスワード入力が必要な認証付きプロキシの内側のLANでmattermostクライアントとVisua lStudioCodeを使う に kaakaa より
  • 泣かせっぱなしにするクライングコントロールで、九ヶ月の子供が、三日間で朝の六時まど寝た。 に クライングコントロールのその後 夜中にまた起きるようになった。 – 金融系なんちゃってSEの日記 より

最近の投稿

  • Excelしか知らない人へ:VLOOKUP・XLOOKUPで頑張っているなら、DataFrameを使わないと正直もったいない
  • PythonでOracle接続にハマった話(64bit問題とtnsnames.oraの落とし穴)
  • Android Studio Panda 2(2025.3.2)をインストールしてみた
  • Github Copilotにコードの続きをうまく書かせるコツ(3つのファイルを置くだけ)
  • 池袋東口のスターバックス

感想、要望などコメントをください

Footer

Feedly でフォロー

follow us in feedly

はてなブックマーク でフォロー

このエントリーをはてなブックマークに追加

トップページへのリンク

ストレスから自由になる日記 トップページ

%d