『カップル成立を早く見つけたい』(tono) ・a〜kの11人×2人の男女がいます。この男女がどの人を希望しているかを早く見つける方法を教えてください。ちなみに女性aの第一希望、第二希望、第三希望は男性のa,g,h、男性aの第一希望、第二希望、第三希望はg,d,cという感じで女性の意見を優先して、カップルを成立させていきたいのです。当然成立すればその人は計算から削除していく形になれば幸いです。ちなみに表はあるのですが、掲示板では書きづらいのでこのようにしました。よろしくお願いいたします。 ---- 表がどの様なものかわからないので勝手に作りました。見た目は悪いです。 多分間違いないと思いますが、お気づきの方はご指摘ください。 一番上のブロックは、データとして入力してます。 各ブロックの間は1行空けてます。 各ブロック内での空行・空セルは、計算結果上のスペースです。 関数は、キィーとなるものを最後にまとめて書き込んでます。 女名前 第一希望 第二希望 第三希望 男名前 第一希望 第二希望 第三希望 A A B H A A B C B A B I B A C I C A B J C H D G D C A K D F E D E C A E E C B A F C K F F D C B G H C G G E D G H H C H H C B A I H C I I G J B J K I J J E F C K B E K K F E D 女名前 第一希望 一抜け男 ニ抜け男 三抜け男 残り男 第一希望 第二希望 第三希望 A 1 A B 2 B A C I C 3 D 2 C D F E D E E C B A F F D C B G G E D G H H C B A I I G J B J J E F C K K F E D 女名前 第ニ希望 一抜け男 ニ抜け男 三抜け男 残り男 第一希望 第二希望 第三希望 B B A C I C D F E D E E C B A F 1 K F D C B G G E D G H H C B A I J 2 I J E F C K 女名前 第三希望 一抜け男 ニ抜け男 三抜け男 残り男 B B C 3 J D E E F G G H H I K カップル 女 男 A A C J D C F K J I A15:=A2 B15:=IF(VLOOKUP(B2,$F$2:$I$12,2)=$A2,1,IF(VLOOKUP(B2,$F$2:$I$12,3)=$A2,2,IF(VLOOKUP(B2,$F$2:$I$12,4)=$A2,3,""))) C15:=IF(B15=1,B2,"") D15:=IF(ISERROR(MATCH(B2,$C$15:$C$25,0))=TRUE,IF(B15=2,B2,""),"") E15:=IF(AND(ISERROR(MATCH(B2,$C$15:$C$25,0))=TRUE,ISERROR(MATCH(B2,$D$15:$D$25,0))=TRUE),IF(B15=3,B2,""),"") F15:=IF(OR(ISERROR(MATCH(F2,$C$15:$C$25,0))=FALSE,ISERROR(MATCH(F2,$D$15:$D$25,0))=FALSE,ISERROR(MATCH(F2,$E$15:$E$25,0))=FALSE),"",F2) G15:=IF($F15="","",VLOOKUP($F15,$F$2:$I$12,2)) H15:=IF($F15="","",VLOOKUP($F15,$F$2:$I$12,3)) I15:=IF($F15="","",VLOOKUP($F15,$F$2:$I$12,4)) A28:=IF(AND(C15="",D15="",E15=""),A15,"") B28:=IF(A28="","",IF(VLOOKUP(C2,$F$15:$I$25,2)=$A28,1,IF(VLOOKUP(C2,$F$15:$I$25,3)=$A28,2,IF(VLOOKUP(C2,$F$15:$I$25,4)=$A28,3,"")))) C28:=IF(B28=1,C2,"") D28:=IF(ISERROR(MATCH(C2,$C$15:$C$25,0))=TRUE,IF(B28=2,C2,""),"") E28:=IF(AND(ISERROR(MATCH(C2,$C$15:$C$25,0))=TRUE,ISERROR(MATCH(C2,$D$15:$D$25,0))=TRUE),IF(B28=3,C2,""),"") F28:=IF(OR(ISERROR(MATCH(F15,$C$28:$C$38,0))=FALSE,ISERROR(MATCH(F15,$D$28:$D$38,0))=FALSE,ISERROR(MATCH(F15,$E$28:$E$38,0))=FALSE),"",F15) B41:=IF(A41="","",IF(VLOOKUP(D2,$F$28:$I$38,2)=$A41,1,IF(VLOOKUP(D2,$F$28:$I$38,3)=$A41,2,IF(VLOOKUP(D2,$F$28:$I$38,4)=$A41,3,"")))) A55:=IF(OR(C15<>"",D15<>"",E15<>""),A15,IF(OR(C28<>"",D28<>"",E28<>""),A28,IF(OR(C41<>"",D41<>"",E41<>""),A41,""))) B55:=IF(OR(C15<>"",D15<>"",E15<>""),B2,IF(OR(C28<>"",D28<>"",E28<>""),C2,IF(OR(C41<>"",D41<>"",E41<>""),D2,""))) もっと簡単な方法もあるかもしれませんが、順序立てて考えてみました。 不明な点があれば、またレスして下さい。見づらい店は点はご容赦下さい。 入力間違い等あった場合はごめんなさい! (sin)