• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2003の質問です)

エクセルでの商品一覧表示方法を知りたい

このQ&Aのポイント
  • エクセル2003でシート1のデータをシート2やシート3に反映させる方法を教えてください。
  • 以前に教えていただいた数式を使用していますが、行数が増えると再計算処理時間が長くなっています。
  • シート2の「A2」に商品コード、「B2」に商品名、「C2」に在庫数を入力し、「A1」に太郎さんや次郎さんを入力すると、シート1のデータを一覧で呼び出せるようにしたいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

まぁ、単純に速さ比べをするなら確かに E1に =IF(A1="","",COUNTIF(Sheet1!D:D,A1)) を記入、 E4に =IF(ROW(A1)>$E$1,"",MATCH($A$1&ROW(A1),Sheet1!E:E,0)) 以下コピー A,B,C4以下は回答1の通り といった具合にすることで、更に速くなります。

tamamike3670
質問者

お礼

回答ありがとうございます        すごく助かりました。

その他の回答 (3)

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

 回答:No.1様の方法よりも更に再計算処理に要するコンピュータの負荷を軽減する事が出来る方法です。  Sheet2やSheet3のレイアウトを少々変更しまして、例えばSheet2のA1セルに「生産者名:」、A2セルに「商品種類数:」等と入力して下さい。(このA1セルとA2セルに入力する項目名に関しては、別の適当な名称に変更されても構いません)  次に、Sheet2のB1セルに「太郎さん」等の生産者名を入力して下さい。  次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF($B$1="",0,COUNTIF(Sheet1!$D:$D,$B$1))  次に、Sheet2のA4セルに次の関数を入力して下さい。 =Sheet1!$A$1  次に、Sheet2のB4セルに次の関数を入力して下さい。 =Sheet1!$B$1  次に、Sheet2のC4セルに次の関数を入力して下さい。 =Sheet1!$C$1  次に、Sheet2のA5セルに次の関数を入力して下さい。 =IF(ROWS($5:5)>$B$2,"",INDEX(Sheet1!$A:$C,MATCH($B$1&ROWS($5:5),Sheet1!$E:$E,0),MATCH(A$4,Sheet1!$A$1:$C$1,0)))  次に、Sheet2のA5セルをコピーして、Sheet2のB5~C5の範囲に貼り付けて下さい。  次に、Sheet2のA5~C5の範囲をコピーして、同じ列の6行目以下に貼り付けて下さい。  最後に、Sheet2のコピーシートを生産者の人数分だけ複製して、そのコピーシートのB1セルに入力している生産者名を、各生産者の名前に変更して下さい。  それから余談ですが、この方法でも未だ再計算処理時間が長いようでしたら、計算処理の設定を[自動]ではなく、[手動]にしておきますと、セルに入力しただけでは再計算が行われなくなりますので、1つのセルに入力する度に「再計算が終わるまで次の入力が行えない」という事態を避ける事が出来、入力を速やかに行う事が出来ます。  そして、全ての入力を済ませてから、[F9]キーを押す事で、再計算処理をまとめて行う事が出来る様になります。 【参考URL】  給与計算・事務代行カンパニー JIMCOMPANY【ジムカン】 > Excel教室 > 無料のWEB教室 > 計算方法の自動⇔手動   http://www.jimcom.co.jp/excel/basic_setting/000001.html  又もしも、たった1回の手動計算であっても時間が惜しいという場合には、ワークシート関数ではなく、Sheet1のE列の処理を廃止した上で、VBAを使った方法に変更する事も検討された方が良いかも知れません。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ごめんなさい誤記ました。 シート2のE4に =IF(COUNTIF(Sheet1!E:E,$A$1&ROW(A1)),MATCH($A$1&ROW(A1),Sheet1!E:E,0),"") と記入、以下コピー です。失礼しました。 実際にはこのシート2のE列は,状況に応じてA列でもどこでも好きな場所に配置して構いません。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

たとえば。 シート2のA1に「太郎さん」を記入 シート2のE3に「行位置」と記入 シート2のA3以降に「商品コード」「商品名」「在庫数」を記入 E4に =IF(COUNTIF(Sheet1!E:E,$A$1&ROW(A1)),MATCH(Sheet1!E:E,$A$1&ROW(A1),0),"") と記入、以下コピー A4に =IF($E4="","",INDEX(Sheet1!A:A,$E4)) を記入、右にコピー、下にコピー といった工夫で軽減できます。

関連するQ&A

専門家に質問してみよう