• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの質問です。特定の行を取り出したいです)

Excelでお店ごとのサンプル商品とその数を取り出す方法は?

このQ&Aのポイント
  • Excelで表を使ってお店ごとのサンプル商品とその数を取り出す方法を紹介します。
  • 日付、店舗、天候、健康アドバイザーなどの情報が記載されたExcel表から、特定の行を抽出することでお店ごとのサンプル商品とその数を取得できます。
  • Excelのフィルタ機能を使って、店舗ごとにデータを絞り込み、サンプル商品とその数を確認することができます。

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

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

 作業列を使用して、別シートにお店ごとのサンプル商品とその数の一覧表を表示させるという方法は如何でしょうか?  今仮に、御質問文中にある表がSheet1に存在していて、その中で左上の隅に記されている「日付」という項目名は、Sheet1のA1セルに入力されているものとして、Sheet3のA列~C列を作業列として使用して、Sheet2に「お店ごとのサンプル商品とその数の一覧表」を表示させるものとします。  まず、Sheet3のA1セルに 1 と入力して下さい。  次に、Sheet3のA2セルに次の数式を入力して下さい。 =IF(COUNTIF(Sheet1!$B$1:INDEX(Sheet1!$B:$B,ROW()),INDEX(Sheet1!$B:$B,ROW()))=1,COUNT(A$1:A1)+1,"")  次に、Sheet3のB2セルに次の数式を入力して下さい。 =IF(INDEX(Sheet1!$B:$B,ROW())="","",INDEX(Sheet1!$B:$B,ROW())&"■"&INDEX(Sheet1!$E:$E,ROW())&" #"&COUNTIF(B$1:B1,INDEX(Sheet1!$B:$B,ROW())&"■"&INDEX(Sheet1!$E:$E,ROW())&" #*")+1)  次に、Sheet3のC2セルに次の数式を入力して下さい。 =IF(RIGHT($B2,2)="#1",INDEX(Sheet1!$B:$B,ROW())&"■"&COUNTIF($B$1:$B2,INDEX(Sheet1!$B:$B,ROW())&"■"&"*#1"),"")  次に、Sheet3のA2~C2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  次に、Sheet2のA1セルに次の数式を入力して下さい。 =Sheet1!$B$1&""  次に、Sheet2のB1セルに次の数式を入力して下さい。 =Sheet1!$E$1&""  次に、Sheet2のC1セルに次の数式を入力して下さい。 =Sheet1!$F$1&""  次に、Sheet2のA2セルに次の数式を入力して下さい。 =IF(AND(COUNTIF(A$1:A1,"*?")<COUNT(Sheet3!$A:$A),ROWS(A$1:A2)-MATCH(INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A1,"*?"),Sheet3!$A:$A)),A$1:A1,0)>=COUNTIF(Sheet3!$B:$B,INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A1,"*?"),Sheet3!$A:$A))&"■*#1")),INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A1,"*?")+1,Sheet3!$A:$A)),"")  次に、Sheet2のB2セルに次の数式を入力して下さい。 =IF(ROWS($A$2:$A2)>COUNTIF(Sheet3!$B:$B,"*■*#1"),"",INDEX(Sheet1!$E:$E,MATCH(INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A2,"*?"),Sheet3!$A:$A))&"■"&ROWS($A$1:$A2)-MATCH(INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A2,"*?"),Sheet3!$A:$A)),$A$1:$A2,0)+1,Sheet3!$C:$C,0)))  次に、Sheet2のC2セルに次の数式を入力して下さい。 =IF(ROWS($A$2:$A2)>COUNTIF(Sheet3!$B:$B,"*■*#1"),"",SUMIF(Sheet3!$B:$B,INDEX(Sheet1!$B:$B,MATCH(COUNTIF(A$1:A2,"*?"),Sheet3!$A:$A))&"■"&$B2&"*",Sheet1!$F:$F))  次に、Sheet2のA2~C2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  これで、Sheet2に「お店ごとのサンプル商品とその数の一覧表」が自動的に表示させる様になります。

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

比較的分かり易い表を作成するとしたら次のようにしてはどうでしょう。 お示しの表がシート1に有るとしてA1セルからF1セルまでにはお示しの項目名が入力されており下方にそれぞれのデータが入力されているとします。 そこでお求めの表をシート2に作るとして、その際には店舗名が自動で、サンプル商品名も自動で表示され、店舗ごとのそれぞれのサンプル商品名とサンプル配布数の合計が合わせて表示させることにするためにはまずシート1には3つの作業列をもけます。 G2セルには次の式を入力して下方にドラッグコピーします。 =IF($B2="","",IF(COUNTIF($B$2:$B2,$B2)=1,MAX(G$1:G1)+1,INDEX(G$1:G1,MATCH($B2,$B:$B,0)))) H2セルには次の式を入力して下方にドラッグコピーします。 =IF($B2="","",IF(COUNTIF($E$2:$E2,$E2)=1,MAX(H$1:H1)+1,INDEX(H$1:H1,MATCH($E2,$E:$E,0)))) I2セルには次の式を入力して下方にドラッグコピーします。 =IF(G2="","",G2*1000+H2) シート2では1行目は自由に使うとしてA3セルには次の式を入力して下方jにドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!G:G),"",INDEX(Sheet1!B:B,MATCH(ROW(A1),Sheet1!G:G,0))) 店舗名が表示されます。 B2セルには次の式を入力して右横方向にドラッグコピーします。 =IF(COLUMN(A1)>MAX(Sheet1!$H:$H),"",INDEX(Sheet1!$E:$E,MATCH(COLUMN(A1),Sheet1!$H:$H,0))) サンプル商品名が表示されます。 B3セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(OR(B$2="",$A3=""),"",SUMIF(Sheet1!$I:$I,ROW(A1)*1000+COLUMN(A1),Sheet1!$F:$F)) これで各店舗ごとのサンプル商品ごとの総数が表示されますね。

youichi1971
質問者

補足

表が長いため、okwave上では行が折り返してしまってます。日付、店舗、天候、健康アドバイザー、サンプル商品、サンプル配布数まで一行に収まらなかった様子です。 

  • bignishi
  • ベストアンサー率25% (1/4)
回答No.2

【回答】(本回答は一例に過ぎません。) 質問内容は、店舗毎にサンプル商品の配布数を集計する。 これを、実現する為には、 (1)表のデータを並び替える作業(ソート)を行ないます。(昇順で並び替える)   並び替えキーは   優先順位1番で店舗名称を、優先順位2番でサンプル商品名を指定します。 次に (2)店舗名称又はサンプル商品名称の異なる行の直前に空白行を1行挿入します。 (3)この空白行のサンプル配布数のセルに集計計算式を挿入します。(Sum関数) 以上で解決すると思います。 追記 一回限りの作業又は少量のデータ(表)であれば上記の方法での対応で問題ないと思います。 この様な作業を毎回繰り返したり、大量のデータ(表)を手作業で行なうには不向きです。 手作業による、作業ミスや作業時間の短縮を図る上からも、VBAでの自動化をお奨めします。 VBAで自動化することにより、其の他(例えばアドバイザーや天候の良し悪しによる)の分析 もワンタッチで行なう事ができます。 以上、参考まで。

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.1

ピボットテーブルでは駄目ですか?

関連するQ&A