• 締切済み

複数条件での集計方法について(Excel2003)

複数の条件で集計を行い、データの個数を表示させたいと考えてます。 対処方法をご教示下さい。 <例>     列A    列B   列C  列D 1 注文番号 メーカ名 タイプ  購入日 2  123     NEC   NOTE  2010/1 3  123     NEC   NOTE  2010/1 4  123     NEC   DESK  2010/1 5  456     HP    NOTE  2010/2 6  456     HP    NOTE  2010/2 上記の表を列A~列Dの集計により     列A    列B   列C  列D  列E 1 注文番号 メーカ名 タイプ  購入日 個数 2  123     NEC   NOTE  2010/1  2 3  123     NEC   DESK  2010/1  1 4  456     HP    NOTE  2010/2  2 列Eにデータの個数を表示 尚、集計の条件としては、列Aの注文番号が最優先の集計キー、次いで列B、列C、列Dとなります。 又、行数は約1500行前後です。 宜しくお願い致します。

みんなの回答

  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.3

こんにちは。 ピボットテーブル機能を利用してもいいなら次のように作業をしてみてください。 作業の目的:データリストに名前を付ける  リストの一つのセルをクリックしてCtrl+Shift+*  名前ボックスに Database と入力してEnter 作業の目的:集計表を作成するシートを用意する  Shift+F11 作業の目的:ピボットテーブルを作成する  データ-ピボットテーブルと…をクリック   次へ をクリック   Database と表示されていることを確認して 次へ をクリック   オプション をクリック    列の総計のチェックを外して OK をクリック   レイアウト をクリック    注文番号 を行エリアにドラッグしてダブルクリック     集計の なし を選択して OK をクリック    メーカ名 を行エリアにドラッグしてダブルクリック     集計の なし を選択して OK をクリック    タイプ を行エリアにドラッグしてダブルクリック     集計の なし を選択して OK をクリック    購入日 を行エリアにドラッグ    メーカ名 をデータエリアにもドラッグしてダブルクリック     名前を 個数 にして OK をクリック   レイアウトの OK をクリック   既存のワークシートを選択して A1セルをクリック   完了 をクリック 作業の目的:集計結果の書式を変更して数値化する  ピボットテーブルツールバーの レポートの書式設定 をクリック  オートフォーマットダイアログの右下にある なし をクリックして OK をクリック  コピー をクリック  貼付の▼をクリックし 値 をクリック  塗りつぶしの色の▼をクリックし 塗りつぶしなし をクリック 作業の目的:空白セルに上の値を表示させる数式を入力する  Ctrl+G セル選択 空白セル OK をクリック  = を入力し ↑ を押し、Ctrl+Enter 作業の目的:数式を数値化する  Ctrl+Shift+*  コピー をクリック  貼付の▼をクリックし 値 をクリック  Ctrl+Home Esc を押す

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 投稿した後気づいたのですが、 前回の方法は単純に列ごとの並びを比較して違うものの集計をしただけですので、 希望通りにならないと思います。 「集計の条件の優先順位がある」というところが引っかかりましたので 再び顔を出してしまいました。 単にSheet1で、集計キーの優先順位の並び替えだけではお望みの結果にならないかもしれません。 どうも何度も失礼しました。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 外していたらごめんなさい。 ↓の画像のようにSheet1に作業用の列を2列設けさせてもらっています。 尚、日付に関してはシリアル値が入力してあり、表示形式だけがユーザー定義から yyyy/m となっているとしています。 Sheet1の作業列E2セルに =IF(COUNTBLANK(A2:D2)>0,"",A2&B2&C2&MONTH(D2)) F2セルに =IF(OR(E2="",COUNTIF($E$2:E2,E2)<>1),"",ROW(A1)) として、E2・F2セルを範囲指定し、F2セルのフィルハンドルでダブルクリック、又はオートフィルで下へコピーします。 そして、Sheet2のA2セルに =IF(COUNT(Sheet1!$F$2:$F$2000)<ROW(A1),"",INDEX(Sheet1!A$2:A$2000,SMALL(Sheet1!$F$2:$F$2000,ROW(A1)))) として、購入日のD2セルまでオートフィルでコピーします。 (購入日のセルの表示形式はSheet1同様に、ユーザー定義から yyyy/m としておきます) 結果のE2セルだけは数式が違います。 =IF(A2="","",COUNTIF(Sheet1!$E$2:$E$2000,INDEX(Sheet1!$E$2:$E$2000,MATCH(SMALL(Sheet1!$F$2:$F$2000,ROW(A1)),Sheet1!$F$2:$F$2000,0)))) 最後にA2~E2セルを範囲指定し、E2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 こんなんで良いのですかね? 以上、参考になれば幸いですが、 最初に書いたように的外れなら読み流してくださいね。m(__)m

関連するQ&A