- ベストアンサー
関数での在庫管理表を作成する方法
- 関数を使用して在庫管理表を作成する方法について教えてください。エクセルで在庫リストを作成していますが、複数条件の表示に困っています。
- エクセルのSheet2に在庫リストを作成し、Sheet1で複数条件での検索結果を表示したいです。具体的な例を教えてください。
- また、数値の範囲での検索結果も取得したいです。例えば、数値1が0.1から0.19の間の商品を表示させる方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
お示しのデータが次のようになっているとします。 シート1ではC3にNo、D3に製品名、C5に材料1、D5に材料2、C7に数値1、D7に数値2の文字があり検索に使用するデータはそれぞれの項目の1行下の行に入力するものとします。 A14セルからF14セルにはNoから数値2までの項目名が並んでいるとして、検索の結果はそれ以下の行に表示されるとします。 シート2ではA4セルからF4セルまでに項目名が並び、それ以降の行にデータが入力されているとします。 なお、検索に使用する数値1のデータおよび数値2のデータについては、すなわち、C8セルやD8セルに入力するデータについては、ある範囲を指定して検索する場合には0.9-0.19などと半角英数文字で入力することとします。 非常に操作が複雑になりますので作業列や作業のセルを用意して対応することとします。 シート1のF3セルには次の式を入力します。 =IF(Sheet1!D4="","",D4&"/")&IF(Sheet1!C6="","",C6&"/")&IF(Sheet1!D6="","",D6&"/")&IF(Sheet1!C8="","",IF(ISERROR(FIND("-",C8)),C8&"/","OK/"))&IF(Sheet1!D8="","",IF(ISERROR(FIND("-",D8)),D8,"OK")) A15セルには次の式を入力し、F15セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet2!$J$5:$J$1000,ROW(A1))=0,A$14=""),"",INDEX(Sheet2!$A$5:$F$1000,MATCH(ROW(A1),Sheet2!$J$5:$J$1000,0),COLUMN(A1))) シート2についてはG5セルに次の式を入力しH5セルまでオートフィルドラッグしたのちに、下方にもオートフィルドラッグします。 =IF(OR($A5="",Sheet1!C$8=""),"",IF(ISERROR(FIND("-",Sheet1!C$8)),"",IF(AND(E5>=VALUE(LEFT(Sheet1!C$8,FIND("-",Sheet1!C$8)-1)),E5<=VALUE(MID(Sheet1!C$8,FIND("-",Sheet1!C$8) +1,10))),"OK","NG"))) これらの列は数値1や数値2のデータについて範囲指定の検索があった時に使用するものです。 I5セルには次の式を入力し下方にオートフィルドラッグします。 =IF(A5="","",IF(Sheet1!$D$4="","",$B5&"/")&IF(Sheet1!$C$6="","",$C5&"/")&IF(Sheet1!$D$6="","",$D5&"/")&IF(Sheet1!$C$8="","",IF(G5="",$E5&"/",G5&"/"))&IF(Sheet1!$D$8="","",IF(H5="",$F5,H5))) これらの操作が終わった後で検索のデータを入力すれば、それらのデータを満足するデータが15行目以降に表示されます。 式が複雑ですので、必ずこちらが指定した条件で表を作成し、一度検証してから実際のデータに適応してください。
その他の回答 (5)
- KURUMITO
- ベストアンサー率42% (1835/4283)
大変失礼いたしました。 シート2のJ2セルに入力する式が間違っていました。次の式をJ2セルに入力し下方にオートフィルドラッグしてください。 =IF(Sheet1!$F$3="","",IF(I5=Sheet1!$F$3,MAX(J$4:J4)+1,""))
お礼
できました。 これから応用して、本データを入れていこうと思います。 いろいろありがとうございました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答2では A15セルには次の式を入力し、F15セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet2!$J$5:$J$1000,ROW(A1))=0,A$14=""),"",INDEX(Sheet2!$A$5:$F$1000,MATCH(ROW(A1),Sheet2!$J$5:$J$1000,0),COLUMN(A1))) とのことでF15までオートフィルドラッグしたのちにA15からF15セルまでを選択してF15セルの右下はじの■をクリックして下方の行にドラッグするのです。そのことによって100行までの好きな行だけ式がコピーし貼り付けられますので、該当するデータがたくさんあれば下の行に表示されることになりますね。 A14からF14セルまでの間には項目名を入れるのですよ。
補足
すいません、解答4のところで15行以降への表示がされないという答えがあったにも関わらず、変な補足の書き方をしてしまいました。 解答4で仰られたとおりに、Sheet2のJ5セルに入力後下方にオートフィルを行いました。Sheet1のA15セルのオートフィルは行ってます。 その状態で検索を行うと、複数の条件の答えのもの「製品名:XXX」を入れると J5セル、J6セル には 1 と帰ってきます。 ここでチェックされたものがその後Sheet1の15以降に行くということですよね、しかし、表示される結果は15行の1行のみなのです。 他の検索も同様です。いい忘れましたが当方Office2003です。 バージョンによってできない可能性もあるのでしょうか。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答2で重要なことが抜けていました。 シート2のJ5セルには次の式を入力し下方にオートフィルドラッグします。 =IF(Sheet1!$F$3="","",IF(I5=Sheet1!$F$3,MAX(I$4:I4)+1,"")) この式が入力されていないとシート1で15行以降への該当行の表示ができません。
補足
すべて同様のものを作成し、検証を行ってみましたが、 製品名:XXX と入れたら、14行の所にXXXに該当するもので No 製品名 材料1 材料2 数値1 数値2 0001 XXX PPP VVV 0.152 12.3 0002 XXX MMM VVV 0.152 12.3 を複数表示というものがうまくできませんでした。 で、よく考えてみるとこの表記では、15行のみに表示させる形の書き方ですね。 15行と16行に渡って複数表示させたいのですができるのでしょうか? たとえば「製品名」では15、16行に2つ「材料1」で「PPP」と検索したら15,16、17行の3つに出てくるような形です。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2で数値の範囲を入力する例で0.9-0.19のように書きましたが0.1-0.19の誤りです。-の前にある数値はーの後にある数値よりも小さいことが必要です。
お礼
補足ありがとうございます。
- ksys2009
- ベストアンサー率33% (1/3)
質問の回答とは異なりますが、オートフィルタ機能を使用してはどうでしょうか。
お礼
それも視野に入れましたが、今回のデータの応用で他の作業にも使えそうな事が有りましたので、あえて関数でと投稿しました。 回答ありがとうございます。
お礼
詳細な説明ありがとうございます。 現在は帰宅しているので、明日朝からやってみたいと思います。 助かりました。