- ベストアンサー
エクセル マッチング
エクセルのマッチングの質問です。 A列 B列 C列 D列 004 021 1 3795 031 045 1 156 F列 G列 H列 I列 021 004 1 -3795 045 031 1 -156 というように入力します。(それぞれの列に1000行ほど) AB列FG列の数字は逆、C列とH列は一致、D列とI列は+と-の符号は逆。この状態が○で、それ以外の状態が×です。 この条件が一致するものを1000行ほどの中から探し出し、E列に○or×と表示したいのです(ABCD列1行目に対して)。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
J列に =IF(AND(A1=G1,B1=F1,C1=H1,D1=-1*I1),"○","×") 下までコピィで試してみてください。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の書き方が不十分。 >004 021 1 3795 と比べる行というか、一致するといえる行は同行にあるのか。 >一致するものを1000行ほどの中から探し出し・・ からみると同行にあるとは限らないのかな。 その点は質問にはっきり書くこと。 その場合は○xをつけるだけでは、チェックなどの用途にには使えないのでは。どこの行に比較相手があるかわからない。 ーー もうひとつ、キーというか、同じと看做すのは A+BとG+F列か。 ーーー A+F列、G+F列を結合した列を別途作り、1方1行データで他方列全体を対象に、VLOOKUP関数を使って、CとH、DとIの一致を式にすることになると思う。 ーーー この課題は自由にやるには、VBAで、マッチングの比較アルゴリズムを使うのがよいと思うが、VBAの経験は無いのでしょうね。
お礼
質問の内容が不十分だったようで申し訳ありません。 もう一度詳しく説明させて頂きますと、 ABCD列の意味は、 (1)004番が021番に1の商品3795円分を渡した。 (2)031番が045番に1の商品156円分を渡した。 FGHI列の意味は、 (3)021番が004番から1の商品3795円分貰った。 (4)045番が031番から1の商品156円分貰った。 という意味です。 最後の集計を考えて、渡した側は金額を+で表示、貰った側は金額を-で表示したいのです。 このやりとりが1000件分あり、順不同で入力されているので (1)の相手である(2)が何行目にいるのかは分かりませんし、(1)の相手がいないこともあります。 知りたいことは、(1)の相手がいるかいないかです。 それをE列で○or×で表示させたいと思います。 パソコンの知識が無いため、VBAの比較アルゴリズムというものは全く分かりません… 簡単な方法や関数があったら、教えて下さい。 宜しくお願い致します。
補足
すみません!間違えました。 (1)の相手は(2)ではなく、(3)です!
お礼
ご回答をありがとうございます。 さっそく試してみます!!