🐙

【エクセル】2つのデータを一致する項目だけ横に並べて、一致しない項目は空白で配置を揃える加工をしたい

2023/12/28に公開

2つのデータを一致する項目だけ横に並べて、一致しない項目は空白で配置を揃える加工をしたい

以下の画像のような加工をしたいということです。

前提

それぞれのデータで被りがないこと。つまり項目Aにaaaが二つあったらダメ。
データがソートされていること

完成イメージ

実際の手順

手順1:項目Aと項目BをC列にコピーする

わかりやすさのために色をつけています。(ctrl c, vで実施)

手順2:作ったC列の重複を削除と並び替え

[データ] > [重複の削除] [データ] > [並び替え]

手順3:D列、E列に数式を設定し、オートフィルで下まで適用

数式は画像の通り
(オートフィル:セルを選択して右下の四角をドラックして下のセルを埋めるやつ)

数式 左
=IFERROR(VLOOKUP(C2,A:A,1,FALSE),"")
数式 右
=IFERROR(VLOOKUP(C2,B:B,1,FALSE),"")

細かいこと

  • 数式が複雑、中間の列もあるので、値だけをコピーして他のところに貼り付けて使うのが良い
    • 貼り付けた後は条件付き書式で重複に色をつけるのも良い
  • 具体的な使用例
    • 環境Aと環境Bにインストールされているアプリ一覧をcsvで入手したが包含関係を調べたい
    • 2日行ったイベントでの参加者を確認したい
  • この手順は結構手間なので必要なければ、他の方法をおすすめする、「データの比較 エクセル」とかで調べると良い、以下は一例
    • 左右の一致だけであればIFで比べるだけ
    • 重複を知りたいだけであれば、条件付き書式
    • 包含関係があるなら中間の部分は作成不要
  • これ以上複雑なことするなら、python使った方が良さそう

数式解説

数式
=IFERROR(VLOOKUP(C2,A:A,1,FALSE),"")

VLOOKUP:範囲の内容を行ごとに検索する
IFERROR:エラー消し("N/A"表記の回避)

VLOOKUP(検索対象、検索範囲、返される値を含む範囲内の列番号、検索方法)
つまり、今回では
D2において:C2(中間列のaaa)がA列にあるためC2(aaa)を返す
D3において:C3(中間列のbbb)がA列にないため、N/A、しかしIFERRORで空白を返す
E2において:C2(中間列のaaa)がB列にないため、N/A、しかしIFERRORで空白を返す
E3において:C3(中間列のbbb)がB列にあるためC3(bbb)を返す

返される値を含む範囲内の列番号に関しては2などを設定することで隣のセルの内容も返すことができるようだ(←?)基本1で良い
検索方法はFALSEで完全一致、基本これ使えば良い
「VLOOKUP」の「V」は「Vertical」・・・垂直、縦方向の意味
「HLOOKUP」の「H」は「Horizontal」・・・水平、横方向の意味
横ならHLOOKUPを使う、
エクセルにはLOOKUPという数式もあるが、非推奨らしい(完全一致検索ができない、戻り値が設定できないなど)

その他

ぱっと調べた感じやり方が見つからなかったため記事にしました。
私はエクセルに詳しくありません。素人が適当に書いたものです。ご注意ください
もっといい方法があったら教えてください

Discussion