プロが教える店舗&オフィスのセキュリティ対策術

【目的】エクセル関数を使用して、複数シートを対象に商品名によってデータを振り分けしたいです。

複数シートに検索対象を広げる事が出来ずにとても困っています。お力を貸してください。

過去に商品データの振り分け質問がありましたので、そちらを参考に作成させていただきました。
http://oshiete.goo.ne.jp/qa/7843035.html

上記URLの質問では一つのシートに対し、商品データの振り分けをされる形でしたが、
これを複数シートを対象に商品データの振り分けがしたいのです。

IFを複数使用し、複数シートを指定してもエラーでうまく動きません。
=IF($A3="","",VLOOKUP($A3,Sheet1!$A:$D,MATCH(B$2,Sheet1!$A$1:$D$1,0),FALSE))
&IF($A3="","",VLOOKUP($A3,Sheet2!$A:$D,MATCH(B$2,Sheet2!$A$1:$D$1,0),FALSE))


何かよい方法はありませんでしょうか?

何卒よろしくお願い致します。m(_ _)m

A 回答 (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」という箇所を全て(関数の中のものも含めて)「作業用」に置き換えるだけで、商品データの振り分けを行う事が出来る筈です。
「EXCEL複数シートでの商品データを振り」の回答画像1
    • good
    • 1
この回答へのお礼

今回参考にさせていただいた方から再度回答を頂けるとは思ってもいませんでした。
本当にご丁寧にありがとうございます。

やはり考え方の問題なのだということがはっきりとわかりました。

現在既にデータがぎっしりと入っている複数シートの管理表を渡され、既存のデータをさらに
複数カテゴリに分けてほしいとの依頼があり、今回の質問に至りました。

さっそく実行させていただいた結果、しっかりと動作確認と考え方を把握させていただきました。

これだけのサンプル・方法があれば、後は応用してできると思います。

最後に本当にご丁寧にありがとうございました。m(_ _)mm(_ _)mm(_ _)m

お礼日時:2013/10/26 10:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!