• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マッチング)

エクセルでマッチングを実施する方法

このQ&Aのポイント
  • エクセルを使用してマッチングを行いたい場合、順不同で入力された1000件のデータから特定の相手が存在するかどうかを判断する方法を紹介します。
  • 具体的には、(1)の相手がいるかどうかを判定するために、(1)が(3)とのやり取りをした場合に特定のパターンが出現するかどうかを確認します。
  • この方法を利用することで、(1)の相手が存在する場合は「○」、存在しない場合は「×」という表示をE列に行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

まず、次のような表にしてください。 004 021 1 3795 031 045 1 156 021 004 1 -3795 045 031 1 -156 これを元に1行ごとに渡し番号、貰い番号、商品No.、金額の流れ(±)が判るデータを作ります。 金額が+の場合はA列が渡し番号、-の場合はB列が渡し番号と判断します。 例:1行目は、+004_021_1_3795 3行目を -0004_021_1_3795 F1に↓を入れて下までコピー。 =IF(D1>0,"+"&A1&"_"&B1,"-"&B1&"_"&A1)&"_"&C1&"_"&TEXT(ABS(D1),0) 次に、F列に±逆転したデータが1つあれば○、それ以外は×と表示する式をE列にいれます。 例:E1に↓を入れて下までコピー =IF(COUNTIF(F:F,IF(D1<0,REPLACE(F1,1,1,"+"),REPLACE(F1,1,1,"-")))=1,"○","×") こんな感じですかね。

ranta0703
質問者

補足

ご返答、ありがとうございました! さっそく試してみたのですが…  002 021   1   3795  ×  +002_021_1_3795  002  021  1  2760  ×  +002_021_1_2760 -002  021  1  3795  ×  +-002_021_1_3795 -002  021  1  2760  ×  +-002_021_1_2760 となってしまいました… (E)には教えて頂いた通り =IF(COUNTIF(F$2:F$65536,IF(D2<0,REPLACE(F2,1,1,"+"),REPLACE(F2,1,1,"-")))=1,"○","×") (F)には =IF(D2>0,"+"&A2&"_"&B2,"-"&B2&"_"&A2)&"_"&C2&"_"&TEXT(ABS(D2),0) を入力してみたのですが。。。  =IF(D2>0,"+"&A2&"_"&B2,"-"&B2&"_"&A2)&"_"&C2&"_"&TEXT(ABS(D2),0) の+をマイナスにしてみたりと色々試してみたのですが、うまく出来ませんでした。  ご指導お願いします。

その他の回答 (2)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

No.2です。 私が例として挙げた表とF列に入れる式の説明を良く見てください。 プラスマイナスは金額についていますし、A・B列のどちらが渡し番号なのかの判断も、金額がプラスかマイナスかで判断しています。 A列に±をつけたいのでしたら、F列に入れる式を変えて下さい。

ranta0703
質問者

お礼

何とか出来そうです! ありがとうございました。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.1

「誰(A)」が「誰(B)」「にorから」「何」「を渡したor貰った」 を調べて、そこから 「誰(B)」が「誰(A)」「からorに」「何」「貰ったorを渡した」 という文字列を作って、それが存在するかどうかを調べれば良いだけですよね? 渡すときは「○円分『を』渡した」で、貰うときは「○円分貰った」となっていますが、『を』の有無は書き間違いですか?それとも実際にそうなっているのですか?

ranta0703
質問者

補足

知りたいことは、『誰が誰に何を何円分渡した』と『誰が誰に何を何円分貰った』という情報が双方で一致しているかです。 一致していたら『○』していなかったら『×』で表示させたいと思います。

関連するQ&A