• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL複数シートでの商品データを振り分けしたい)

EXCEL複数シートでの商品データを振り分けする方法

このQ&Aのポイント
  • エクセル関数を使用して、複数シートを対象に商品名によってデータを振り分けする方法について教えてください。
  • 複数シートに検索対象を広げることができずに困っています。ご助力をお願いします。
  • IF関数を複数使用してもエラーが発生してしまいます。もっと良い方法はありますか?

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 無理に複数のシート状のデータを直接振り分け様とするのではなく、複数のシート状にあるデータを、一旦、1枚のシート上に纏めてしまってから、その全てのデータが纏められているシートに対して、質問者様が御質問文で挙げておられる過去の質問の方法を適用されれば良い訳です。  今仮に、Sheet1、Sheet2、Sheet3の3枚のシートの各々において、A列には商品名が、B列には商品コードが、C列には金額が、それぞれ入力されていて、それら3枚のシートの何れも1行目には「商品名」等の項目名が入力されていて、実際のデータは2行目以下に並んでいるものとします。  又、B列に入力されている商品コードは、Sheet1~Sheet3を通して同じものが複数の箇所に入力されている事は無い(例えば、Sheet1のB2に入力されている商品コードは、Sheet1のB3以下に同じものが入力されている事が無いのは無論の事、Sheet2やSheet3の中にも同じコードが入力されている事は無い)ものとします。  まず、未使用のシートを1枚用意して、そのシートのシート名を例えば「作業用」(鉤括弧は不要)と設定して下さい。  次に、作業用シートの A1セルに   商品名 B1セルに   商品コード C1セルに   金額 F1セルに   シート名 G1セルに   1 と入力して下さい。  次に、作業用シートのG2セルに次の関数を入力して下さい。 =IF(ISNUMBER(1/COUNTIF(INDIRECT("'"&INDEX($F:$F,ROW())&"'!A:A"),"商品名")),MATCH("*?",INDIRECT("'"&INDEX($F:$F,ROW())&"'!A:A"),-1)-MATCH("商品名",INDIRECT("'"&INDEX($F:$F,ROW())&"'!A:A"),0),"")  次に、作業用シートのE2セルに次の関数を入力して下さい。 =IF((0&$G1)+0>0,SUM($G$1:$G1),"")  次に、作業用シートのE2~G2の範囲をコピーして、同じ列の3行目以下に、元データの枚数文と同じ行数だけ貼り付けて下さい。(将来的に元データのシートの枚数が増える事もあり得る場合には、貼り付ける行をもっと多くしておいても構いません)  次に、作業用シートのH1セルに次の関数を入力して下さい。 =SUM($G:$G)-1  次に、作業用シートのA2セルに次の関数を入力して下さい。 =IF(ROWS($2:2)>$H$1,"",IF(INDEX(INDIRECT("'"&VLOOKUP(ROWS($2:2),$E:$F,2)&"'!A:C"),MATCH("商品名",INDIRECT("'"&VLOOKUP(ROWS($2:2),$E:$F,2)&"'!A:A"),0)+ROWS($2:2)-LOOKUP(ROWS($2:2),$E:$E)+1,COLUMNS($A:A))="","",INDEX(INDIRECT("'"&VLOOKUP(ROWS($2:2),$E:$F,2)&"'!A:C"),MATCH("商品名",INDIRECT("'"&VLOOKUP(ROWS($2:2),$E:$F,2)&"'!A:A"),0)+ROWS($2:2)-LOOKUP(ROWS($2:2),$E:$E)+1,COLUMNS($A:A))))  次に、作業用シートのA2セルをコピーして、作業用シートのB2~C2の範囲に貼り付けて下さい。  次に、作業用シートのA2~C2の範囲をコピーして、同じ列の3行目以下に(全てのデータを表示させるのに十分な行数になる様に)貼り付けて下さい。  次に、作業用シートの F2セルに   Sheet1 F3セルに   Sheet2 F4セルに   Sheet3 という具合に、元データが入力されている各シートのシート名を入力して下さい。  これで作業用シートのA列~C列に全てのデータが纏めて表示されますから、後は質問者様が参考にしておられる「エクセルで商品を振り分ける方法ありますか?」という質問に対する回答に書かれている方法の、「Sheet1」という箇所を全て(関数の中のものも含めて)「作業用」に置き換えるだけで、商品データの振り分けを行う事が出来る筈です。

MAS-B
質問者

お礼

今回参考にさせていただいた方から再度回答を頂けるとは思ってもいませんでした。 本当にご丁寧にありがとうございます。 やはり考え方の問題なのだということがはっきりとわかりました。 現在既にデータがぎっしりと入っている複数シートの管理表を渡され、既存のデータをさらに 複数カテゴリに分けてほしいとの依頼があり、今回の質問に至りました。 さっそく実行させていただいた結果、しっかりと動作確認と考え方を把握させていただきました。 これだけのサンプル・方法があれば、後は応用してできると思います。 最後に本当にご丁寧にありがとうございました。m(_ _)mm(_ _)mm(_ _)m