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