- 締切済み
エクセル2010で複数の条件でマッチングさせる方法
シートAには約1000件のデーター、シートBには約300件のデーターがあります。 シートAの項目は A B C D E F G 1 企業コード 社名 時間1 時間2 日付1 日付2 分類 2 1111 ●社 ● ● ● ● 0001 3 1222 △社 ● × ● 0022 4 1234 ■社 × ● × ● 0135 上記のような項目です。C~Fに関してはOKかNOのしるしが入ります。 そしてA・B・Gは重複はありませんが、C~Fは重複があります。 シートBは A B C D E F 1 氏名 日付 希望分類1 希望分類2 時間1の 時間2の 企業コード 企業コード 2 山田太郎 2 1111 1122 3 山田花子 1 2122 3332 上記のようなものとなります。 実現したいこととして、シートBのE・FにシートAの企業コードを重複なく割り振りをしたいのです。 割り振り条件の優先順位として 1、日付 2、希望分類1 3、希望分類2 で、シートAの「時間1」OKの会社から1社、「時間2」OKの会社から1社を選び出すイメージです。 上から順番に当てて行って、条件に該当するものがなくなったらエラー表示をするようにしたいと 思っております。 一度の処理で厳しい様でしたら複数回の処理にしてもOKです。 また、シート内の項目を増やすことも可能です。 このマッチング作業を手作業でやるとミスが起きそうなので、できるだけ自動化を希望しています。 ある程度の関数は理解できると思います。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! なかなか回答がつかないようなので・・・ サンプル数が少ないのであっているかどうか判りませんが、 ↓の画像で上側がSheet1で下側がSheet2とします。 Sheet2のA~D列は手入力します。 画像ではSheet2のE2セルに =IF($A2="","",IFERROR(INDEX(Sheet1!$A$1:$A$2000,SMALL(IF(IF($B2="日付1",Sheet1!$E$1:$E$2000="●",Sheet1!$F$1:$F$2000="●")*(Sheet1!$G$1:$G$2000=C2)*(Sheet1!C$1:C$2000="●"),ROW($A$1:$A$2000)),COUNTIF(C$2:C2,C2))),"エラー")) これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → Sheet2のE2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 このE2セルを列・行方向にフィルハンドルでコピーすると 画像のような感じになります。 ※ 一発で解決!といかないと思いますので、 たたき台としての回答です。m(_ _)m
お礼
tom04さま 回答ありがとうごさいました。 まったくレスがないで終わるかと思っておりました。 一度サンプル数を増やし実験してみます。 またわからないことがあたら記入させていただきます その際はまたアドバイスを頂けたらと思いますので よろしくお願いいたします。