• 締切済み

エクセル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です。 また、シート内の項目を増やすことも可能です。 このマッチング作業を手作業でやるとミスが起きそうなので、できるだけ自動化を希望しています。 ある程度の関数は理解できると思います。 よろしくお願いいたします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! なかなか回答がつかないようなので・・・ サンプル数が少ないのであっているかどうか判りませんが、 ↓の画像で上側が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

obuchandesu
質問者

お礼

tom04さま 回答ありがとうごさいました。 まったくレスがないで終わるかと思っておりました。 一度サンプル数を増やし実験してみます。 またわからないことがあたら記入させていただきます その際はまたアドバイスを頂けたらと思いますので よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう