[[20230927204542]] 『リストとリストの突合について』(りか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストとリストの突合について』(りか)

こんにちは。
A表とB表を突合させて一致しないものをエラーとして返すことは可能でしょうか?
リストの内容としては……氏名、生年月日、部署1、部署2、IDです。
氏名、生年月日、IDは全列入力されていますが、部署1、2については入力されていたり、されていなかったりします。
完全一致しなかった人をマーキングしたいです。
関数やマクロも調べてみましたが該当するようなものを発見できず、ご教示いただけませんでしょうか。

< 使用 Excel:Excel2016、使用 OS:unknown >


一致しないものとは何と何が一致していないとだめなんですか。
質問が漠然しすぎます。
完全一致とはどういうことですか
A表、B表とも同じレイアウトですか。
(漠然) 2023/09/27(水) 22:05:31

ご返信ありがとうございます。また、質問が漠然としていて分かりづらく申し訳ありません。
AB表共に氏名、生年月日、部署1、部署2、IDの項目があり、その項目が完全一致しないものをマーキングしたいです。
例えば、
A表
  A    B         C     D      E
1 山田 1987.1.1  人事部 人事課 1111
2 小林 1977.2.1  人事部 経理課 2222
3 田中 1992.3.1  総務部 総務課 3333

B表

  A    B         C     D      E
1 渡辺 1987.1.1  人事部 人事課 1111
2 小林 1977.2.1  人事部 経理課 2222
3 田中 1992.3.1  総務部 総務課 3333

この場合A1の氏名がA表だと山田、B表だと渡辺なので、
A1のみマーキングを行う(不一致と分かるような表示にする)を行いたいです。
結果の反映はAB表のどちからに反映をさせるでも、新たなシートに結果を反映させるでも、どちらでも構いません。
もし可能なようであればご助言をいただけますと幸いです。
(りか) 2023/09/27(水) 23:12:44


3 田中 1992.3.1 総務部 総務課 3333
3 田中 1992.3.1 総務部 人事課 1111
の場合はどうする
(?) 2023/09/28(木) 00:18:19

その場合は部署2とIDが異なりますので、その2箇所をマーキングしたいです。
マーキング方法はAB表のどちらかに色づけでも、新なリストを作成でも構いません。
最終的に異なる項目(今回は部署2とID)が分かるようになれば、方法は問いません。
よろしくお願いいたします。
(りか) 2023/09/28(木) 06:47:02

えー、それだったら、
A表の各セルとB表の対応する各セルを比較するだけでOKってことですよね?

提示例のA表がSheet1、B表がSheet2にあるとして、
A表全体を選択して、条件付き書式の数式を
=A1<>Sheet2!A1
書式を塗りつぶしにする等。

ID(一意の値)を基準にして、差異がある箇所をマーキングという話では無い?
(サラスパ) 2023/09/28(木) 08:00:46


 肝心なことが書かれていない。
 ふたつの表はともに ID でソートされているのか(まあ、これは処理前にソートすればよいだけだが)。
 その上で ID 列はまったく同じである保証はあるのか。つまりどちらかに新入社員や退職済み社員のデータがあったりしないのか。そうでなければサラスパさんの条件付き書式で必要かつ十分かつ一番簡単だと思います。
 ちなみに ID が変わるケースも会社によってはありますし。
 
(xlg) 2023/09/28(木) 08:26:07

お返事ありがとうございます。
サラスパ様 =A1<>Sheet2!A1
にて相違項目の色付けができること承知いたしました。ありがとうございます。
今まではAB表のセルで相違項目がある場合は色付けを……と思っておりましたが
おっしゃるとおりIDを基準にして差異を確認したいです。
(A表にいてB表にはいない、また、B表にいてA表にはいない人がいるため)

xlg様 元々のリストはIDの順番もばらばらですので、おっしゃる通り突合の際にソートをかけるつもりでいました。
またご指摘の通りAにはいてBにはいない……という項目(IDもとい人)がいれば、そこも差異としてマーキングを行いたいです。
xlg様の例になぞらえますと、A表には新入社員が含まれているが、B表には含まれていない。そのためその新入社員にもマーキングを行いたい。※IDの使いまわしはありません。

言葉と知識が足りず分かりづらくなってしまい申し訳ありません。
よろしくお願いいたします。

(りか) 2023/09/28(木) 13:24:26


追記
AB表の各項目の相違点および人の有無をマーキングしたいです。

例えば、
A表

  A    B         C     D      E
1 山田 1987.1.1  人事部 人事課 1111
2 小林 1977.2.1  人事部 経理課 2222
3 田中 1992.3.1  総務部 総務課 3333
4 佐藤 1999.4.1  業務部 業務課 4444
5 斎藤 2000.5.1  企画部 企画課 6666

B表

  A    B         C     D      E
1 渡辺 1987.1.1  人事部 人事課 1111
2 小林 1977.2.1  人事部 経理課 2222
3 田中 1992.3.1  総務部 総務課 3333
4 小宮 1859.4.1  業務部 業務課 5555

この場合、
・A1の氏名:山田と渡辺
・A表の佐藤、斎藤そのもの
・B表の小宮そのもの
のマーキングを行いたいです。

(りか) 2023/09/28(木) 13:51:42


 IDを、E列からA列(左端列)に移動させて、
 条件付き書式(VLOOKUP関数)を使うのが簡単です。

(マナ) 2023/09/28(木) 14:12:30


 A表(シートA にあるとする)に条件付き書式(ルール 2個)でマーキングする方法を書きます。B表(シートB にあるとする)の方は推して知るべし!

1. 適用先:A1:D5、数式:=A1<>INDEX(シートB!$A$1:$D$4,MATCH($E1,シートB!$E$1:$E$5,0),COLUMN(A1))
2. 適用先:A1:A5、数式:=ISERROR(MATCH($E1,シートB!$E$1:$E$4,0))

 マナさんの言うように VLOOKUP が使えるように列順を変えれば多少は数式は簡単になるだろうけど。
(xlg) 2023/09/28(木) 14:57:15


ご返信ありがとうございます。

xlg様 お示しいただいた数式にて、AB表の相違点およびお互いのリストに存在しない人物をマークすることができました。
大変助かりました。ありがとうございます。

マナ様 本来のリストはIDが先頭に来ているのでVLOOKUPでも試してみました。
適用先:A1:E5
式:=VLOOKUP(シートA!A1,シートB!$A$1:$E$4,1,0)
・検索の型がFALSEなので一致している部分がマーカーされてしまう
・先頭行(ID)のみ色付けされてしまい、他項目の相違が発見できない
列番号に原因があるのではないかと思うのですが、ご教示いただけませんでしょうか。

よろしくお願いいたします。
(りか) 2023/09/28(木) 16:36:33


 =IFERROR(VLOOKUP($A1,シートB!$A:$E,COLUMN(A1),FALSE)<>A1,TRUE)
(マナ) 2023/09/28(木) 17:03:17

(A表にいてB表にはいない、また、B表にいてA表にはいない人がいるため)
 参考です。

     |[A] |[B]     |[C]   |[D]   |[E] |[F]  
 [1] |A表 |        |      |      |    |     
 [2] |山田|1987.1.1|人事部|人事課|1111|TRUE 
 [3] |小林|1977.2.1|人事部|経理課|2222|FALSE
 [4] |田中|1992.3.1|総務部|総務課|3333|FALSE
 [5] |佐藤|1999.4.1|業務部|業務課|4444|TRUE 
 [6] |斎藤|2000.5.1|企画部|企画課|6666|TRUE 
 [7] |    |        |      |      |    |     
 [8] |B表 |        |      |      |    |     
 [9] |渡辺|1987.1.1|人事部|人事課|1111|TRUE 
 [10]|小林|1977.2.1|人事部|経理課|2222|FALSE
 [11]|田中|1992.3.1|総務部|総務課|3333|FALSE
 [12]|小宮|1859.4.1|業務部|業務課|5555|TRUE 
 [13]|    |        |      |      |    |     

 F2=NOT(NOT(ISNA(VLOOKUP($A9,$A$2:$A$6,1,FALSE))))
 F9=NOT(NOT(ISNA(VLOOKUP($A9,$A$2:$A$6,1,FALSE))))

 A表
 条件書式
 =NOT(NOT(ISNA(VLOOKUP($A9,$A$2:$A$6,1,FALSE))))
 適用範囲
 A2:E6

 B表
 条件書式
 =NOT(NOT(ISNA(VLOOKUP($A9,$A$2:$A$6,1,FALSE))))
 適用範囲
 A9:E12
(IT) 2023/09/28(木) 17:26:37

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.