• ベストアンサー

ピボットテーブルで、個数の集計がうまくできません

職場でExcel2003を使っています。 商品ごとに、取引先の何拠点に納入しているか、調べる…という仕事が発生しました。 元データが、こんな感じ↓ 2011年度7月販売実績 担当部 担当課 取引先名 取引先詳細 商品A 商品B 商品C ○○部 ○○課 A式会社  a支店    100円 100円 200円 ○○部 ○○課 A式会社  b支店    10円  0円   200円 ○○部 ○○課 B式会社  a支店    100円 100円 200円 ○○部 ○○課 C式会社  a支店    0円    0円  200円 … 販売実績(金額)表です。 ピボットの「データの個数」の方を表示する風にすれば、各商品ごと・取引先ごとに、何店舗に買って頂いたのか!ていう、データが出せるのじゃないか、と。 担当部 担当課 取引先名 商品A 商品B 商品C ○○部 ○○課 A式会社  2     1    2 ○○部 ○○課 B式会社  1     1    1 ↑という形に、データを持っていきたい。 今日、元データの下に 担当部 担当課 取引先名 商品A 商品B 商品C ○○部 ○○課 A式会社   ●    ●   ● ○○部 ○○課 B式会社   ●    ●   ● という表を作り、●部分のセルにCOUNTA関数を入れ、上の表の範囲を一つ一つ指定して…ということをしたのですが( COUNTA(C4:C124) とかそういう具合)、手間がかかるし、月ごとに取り扱う会社・店舗数が変動する(予定)なので、来月また同じ設定をしなおさなきゃならないですよね。 ピボットでやっちゃえば一発じゃない? と思っても、 「行データ(←列だったかも)が多すぎる、データ数を減らすか、非表示に設定しろ」 みたいなエラーメッセージが出て、うまく行きません…。 ちなみに、元データが1万行と少し。かなり大きなデータです。 が、誰が作ったとも知れぬ昔のファイルを見たら、4万行を超すデータもピボットで組んでいて。 ということは、ピボットで集計できるだろう、とは思うのですが…その表のレイアウトを覗いて、全く同じように(ウィザード画面で)並べても、完了ボタンを押すと、データが多い、とはねられるのです。 うまいやり方をご存知の方、どうかお教えください。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

>今日、元データの下に 担当部 担当課 取引先名 商品A 商品B 商品C ○○部 ○○課 A式会社   ●    ●   ● ○○部 ○○課 B式会社   ●    ●   ● という表を作り、●部分のセルにCOUNTA関数を入れ、上の表の範囲を一つ一つ指定して…ということをしたのですが この部分はCOUNTA関数ではなくSUMPRODUCT関数を利用します。 表示したい担当部、担当課、取引先名がK2, L2, M2,セル以下に入力されているなら、N2セルに以下の式を入力して右方向に3つ下方向にデータ数分だけオートフィルしてください。 =SUMPRODUCT(($A$2:$A$10000=$K2)*($B$2:$B$10000=$L2)*($C$2:$C$10000=$M2)*(D$2:D$10000<>0)) ただし元データに本当に0円と入力されているなら、数式の最後の部分を「D$2:D$10000<>"0円"」にする必要があるし、実際は空白なら「D$2:D$10000<>""」に、この部分に関係なくA,B,C列の組み合わせが一致するデータで良いなら、この部分を削除することになります。 >その表のレイアウトを覗いて、全く同じように(ウィザード画面で)並べても、完了ボタンを押すと、データが多い、とはねられるのです。 そもそも元のデータはレイアウトがピボットテーブルの集計に向いていないリストになっています。 例示のリストで作成した場合は、おそらく列フィールドにD列のA商品などの項目をドラッグしたため、表示するデータが多く(この場合は100円や200円などのデータが数多く表示された)のではないかと思われます。 もしピボットテーブルで対応するなら、金額を集計するのではなく、商品の種類を集計できる以下のようなリストにする必要があります。 担当部 担当課 取引先名 取引先詳細 商品  金額  ○○部 ○○課 A式会社  a支店    商品A  100  ○○部 ○○課 A式会社  b支店    商品B  200  

unknown-2
質問者

お礼

回答、ありがとうございました! うわ~、やっぱり元データがピボット向きじゃないですかっ。 昨日、帰宅途中に(結局就業時間中にうまくデータ作り直せなかった)本屋に飛び込み、エクセルの本を立ち読みしたら、例として載っていたデータが、やっぱりお示しの表みたくなってて、 「…もしや、元データがピボットに変換できる形になっていない …?」 とは思ったのですが…! 元データのレイアウト、変えられるかなあ… データ取得時に、レイアウトを変えられるみたいなんですが、まだあまり慣れてなくて、できるかどうかわからないんですよね…明日出社したら、元データのレイアウト変更を出来るかどうか、試します!

その他の回答 (3)

noname#204879
noname#204879
回答No.4

「ピボットテーブル」に固執して「↑という形に、データを持っていきたい」のなら、「元データが、こんな感じ」でなく、添付図上段のような「感じ」にする必要があります。 そうすると添付図下段の結果が得られます。

unknown-2
質問者

お礼

詳細な図解、ありがとうございました~! わかりやすかったです! 元データのレイアウト変更が可能か、試します!

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

回答2ですが元の表では商品の価格で円が付いていますがこれはセルの表示形式で表示されているもので実際のデータは円が付いていない形になっているものとしています。

unknown-2
質問者

お礼

あっ、はい。 ・売上実績がない=データが空白 の欄は0値 ・円表示は、実際には数字 です。 …となると、ピボットの「個数をカウントする」では、ムリかな…? だって、ゼロ値も数えちゃいますよね?? かといって、数字を消しちゃうと、ピボットって動かせないんですよね?確か。

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

ビボットテーブルを利用する方法は取引先、支店名の増加などでは再びビボットテーブルを操作する必要があるなど不便なことがあります。 関数を使って別のシートに表示させるようにすればさまざまな変化に瞬時に対応させることができます。 シート1にお示しのデータがあるとしてA2セルからG2セルにかけて項目名が入力されておりそれぞれのデータが稼業に入力されているとします。作業列としてH3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(C3="","",IF(COUNTIF(C$3:C3,C3)=1,MAX(H$2:H2)+1,"")) シート2にお求めの表を表示させるとしてA2セルからF2セルにかけて担当部 担当課 取引先名 商品A 商品B 商品Cと項目名をそれぞれ入力します。 A3セルには次の式を入力してC3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!$H:$H),"",INDEX(Sheet1!$A:$C,MATCH(ROW(A1),Sheet1!$H:$H,0),COLUMN(A1))) D3セルには次の式を入力したのちにF3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF($C3="","",COUNTIF(INDEX(Sheet1!E:E,MATCH($C3,Sheet1!$C:$C,0)):INDEX(Sheet1!E:E,MATCH($C3,Sheet1!$C:$C,0)+COUNTIF(Sheet1!$C:$C,$C3)-1),">0"))

unknown-2
質問者

お礼

回答、ありがとうございます! ま、待って、まず 「もしC3セルが空白なら、空白を表示せよ。空白じゃないならIF(COUNTIF(C$3:C3,C3)=1,MAX(H$2:H2)+1,"")を表示せよ」 と入れるんですね? IF(COUNTIF(C$3:C3,C3)=1,MAX(H$2:H2)+1,"")) は 「COUNTIF(C$3:C3,C3)が1ならMAX(H$2:H2)+1,を表示せよ。1以外のときは空白を表示せよ。」 の意味、更に COUNTIF(C$3:C3,C3) は 「C列3行目(固定)から、C3までの範囲で、C3セルに入ってる値と同じ値の個数を求めなさい」。 …メモります。メモって明日会社で試します…! …お盆休みで上司達がお休み(下っ端は出勤…)なので、会社から直接このページにアクセスしちゃあだめだろうか!と思いつめる昼下がり。

関連するQ&A

  • ピボットテーブルの集計が合わない。

    たとえば、添付の図(左)のように入力します。 次に、ピボットテーブルのウイザードを開き、範囲設定を下記のようにします。 Sheet1!$A$1:$C$14   ※通常では、この式ですが、毎回毎回、データ数(行)が変わるので、大きな数字にします。 ↓ Sheet1!$A$1:$C$20000 ※たとえば、20000行まではデータは来ないだろうということで、20000に変更します。 そして、添付図右のようにピボットテーブルを作ると、集計が合いません。 原因は何でしょうか? 解決策はありますか?

  • ピボットテーブル教えてください

    こんにちは。 下記の画像のようなデータがあります。A1からC4が元データになります。 A8~C12がピボットテーブルになります。 http://upload.fam.cx/cgi-bin/img-box/9fc110806114620.jpg やりたいことは、B2~B4をピポットテーブルにした時に、100で割りたいと思います。 つまり、ピボットテーブルにした時に、B9~B11の値を10,20,30にしたいと思います。 別の領域でB2~B4を100でわって、それをピボットテーブルにすればいいんじゃないかっていうのはわかります。ただ、ピボットテーブルにした時に、なんらかの式を入力して100でわりたいと思っています。 このようなことは実現可能でしょうか?利用しているExcelは2010 or 2003です。よろしくお願いします。

  • ピボットテーブルで集計したデータを…

    ピボットテーブルで集計したデータを… エクセル2007を使っています。 集計の元となる一覧をシート1に打ち込み 下のように1年を通じて作成していきます    月   日   品名   金額    取引先 1  4月  20日  A   ¥12.580  ○○株式会社 2  4月  20日  B   ¥36.851  ××商事 これをシート2でピボットテーブルで集計し、月でまとめたり、品名でまとめたり 取引先ごとを月で集計したりしています。 シート1(取引一覧)は毎日、取引内容が追加されていくので シート2(集計ピボットテーブル)は開くたびに更新されます。 取引先が扱っている品物は100種類くらいあり、 私はそのうちの30種類につき集計します。 残りは他のスタッフが分担して同じ作業をするのですが、 「取引内容元帳」なるものに、それぞれのスタッフが日ごとにデーターを転記していかなくてはならず、 現在は、一日ごとのピボットテーブルの集計を印刷し、 それを手打ちで「取引内容元帳」にうちこんでいく方法をとっています。 私が集計しているピボットテーブルのデータ(数値)を リンクを貼るようなカタチで「取引内容元帳」の決まったセルに 自動的に転記するようなことができませんか? 打ち込みの間違いもなく、これがシステム的にできれば たいへんうれしいのですが…  

  • エクセルの集計(ピボットテーブル)使い方

    エクセルのピボットテーブルは集計するときに同じ項目を表示しません、同じ項目で集計するので当たり前ですが表示させたいのです。 商品  A 6 空白   B 2 空白   C 1 空白   D 1 空白欄にも「商品」が入るようにできませんか?

  • できればピボットテーブルを使いたい

    エクセルのデータとして 【1sheet】 A 10 B 20 C 30 D 40 E 50 【2sheet】 B 50 C 10 E 20 A 40 D 30 【3sheet】 D 30 B 20 A 10 E 50 C 40 【4sheet】 E 20 C 40 A 30 B 10 D 50 とバラバラなデータがあるとします。 上記の場合、合計は A 90 B 100 C 120 D 150 E 140 となりますが、わざわざ1つずつ計算機で算出しています。 これをピボットテーブルというものを使って集計することはできますか? もし出来るならば簡単で構わないので方法を教えて下さると助かります。 また、ピボットテーブルは使えないまたは、使わないほうが良いということで算出する場合、どのような効率の良い方法があるのでしょうか? お願いします。

  • ピボットテーブル)指定した範囲の数字だけ集計

    お店の売上表をつかって、顧客ごとの各年年同期を比較することを考えており、ピボットテーブルをつくっています。 売上表は、売上日・顧客名・売上額・仕入額・粗利額・担当者という項目が あります。 ↓な感じです。 5/13 A様   800円  500円  200円 担当(1) 5/14 A様 10000円 8000円 2000円 担当(1) 5/15 B様  1200円  800円  400円 担当(2) 5/15 B様  2000円 1200円  800円 担当(2) 5/20 C様  1000円  700円  300円 担当(3) ↑のように、各顧客の中には特別に高い買い物をしてくれる時も あるのですが、滅多にないので、その高いモノを購入された場合を 除いて集計したいと思っています。 ↑の場合だと、10000円未満の売上を顧客ごとで集計したい。 ピボットテーブルを使ってどのようにすればよいですか? 調べ方が悪いのか、なかなか見つかりませんので、ここで 教えてもらえたらと思っています。

  • ピボットテーブルの「項目」を減らしたい

    最近、ピボットテーブルを使い始めました。 (完全に初心者です) 小売店のPOS情報を加工したいのですが、うまく使えません。 店名 商品 1週 2週 3週 ~ 52週 A店 雑誌  4  5  5  ~ 6 A店 新書  3  4  2  ~ 4 A店 コミック・・・ A店 実用 A店 他 B店 雑誌 B店 新書 B店 コミック B店 実用 B店 他 C店 雑誌 C店 新書 C店 他 この元データをピボットテーブル化すると、フィールドリストに 「店名 商品 1週 2週 ~ 52週」と大量の項目が表示されます。 これを 「店名 商品 週」にしたいのですが、どうすればよいのでしょうか? ご教授いただければ幸いです。 よろしくお願いいたします。

  • ピボットテーブルの集計方法について教えて下さい

    ピボットテーブルの集計方法についての質問です。 下記のような、商品名ごと/更新日ごとの出荷数量の集計表(ピボットテーブル使用)があります。         商品A ○月×日更新 100      ○月△日更新 200      商品A計   300 商品B ○月×日更新 200      ○月△日更新 300      商品B計   500 この集計表の"商品A計"や、"商品B計"を、"×日更新の数量と△日更新の数量の差" (商品Aなら、商品A計=100)としたいのですが、可能でしょうか? どうかご教授頂きたく、よろしくお願い致します。m(__)m

  • 2つ以上の項目のピボットテーブルを1つのピボットで表示

    2つ以上の項目のピボットテーブルを1つにまとめて表示する方法を探しています。 A   B   C    会社名 料金1  料金2 A   …   … B   …   … C   …   … A   …   … C   …   … A   …   … 上記のようなデータがあり、会社別に「料金1」・「料金2」および「料金1と料金2の合計」をピボットテーブルを使って集計しようと考えています。 現在は元データのD列に「合計」項目を追加し、「料金1」「料金2」「合計」の3項目をそれぞれ別のピボットテーブルとして表示しているのですが、これを一つのピボットテーブルにまとめることは可能でしょうか? 以下のような集計テーブルができることが理想です。 会社名 料金1  料金2  合計 A   …   …   … B   …   …   … C   …   …   … 基本なのかもしれませんが、調べてもわからなかったもので…。 どなたかわかる方よろしくお願いします!

  • エクセルのピボットテーブルで集計の表示方法

    A   B     C ペン  100円  コンビニ     150円  文具店     200円  スーパー エクセルでデータをピボットテーブルで集計すると上のようになってしまいます。 ペンという項目をそれぞれの列に表示する方法はありませんか?

専門家に質問してみよう