• ベストアンサー

エクセルのデータ集計

エクセルでデータの集計についての質問です。 商品のデータベースで「商品名」「注文日」「納品日」が入っています。 「注文日」から「納品日」までが入荷を待ち状態ということになります。 ここで、日ごとの納品待ち商品合計数の年平均を取るにはどうすれば良いでしょうか。 エクセルorアクセスで集計する方法を教えてください!! よろしくお願いいたします。

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

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.5

#2,#4です。 コードの内容はだいたいお分かりになれますか? ちょっと解説しますと、 '納品待ち状態の判定と、納品待ち個数カウント のあたりが、データの各行において、 「入荷待ち状態」であるかどうかを判断しています。 (もちろん1月1日から12月31日までの日付ごとに判断しています。) この、If~End if文の後ろに、 商品のカテゴリが何であるかを判別する文 (Select case)を書き込んで、 カテゴリ別に処理を分岐してください。 あとは、myValueを配列にするか、別の変数を宣言して カテゴリ別に分岐した処理の中で、 変数に+1してカウントすれば実現できます。 ここまでくれば、 あとは完成したも同然ですよ!! それではがんばってください!!

ggmknm
質問者

お礼

大変助かりました。且つ、勉強になりました! これまでも、VBAを覚えたいと思い、自分でかじったりしていたのですが、変数や条件分岐がうまくできずにいました。今回、実例を作っていただいて本当に良い勉強をさせていただきました。 頑張って使っていきたいと思います。どうもありがとうございました!

その他の回答 (4)

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.4

#2です。 こんな感じで、いかがでしょうか。 A列に注文日、B列に納品日があるものとして、 2行目から100行目に1年分のデータが入力されているものと仮定して書いてみました。 納品待ち個数の集計結果が、10列目に出力されます。 あとは、これを元に合計や最大最小を求めてください。 なお、Const・・・の行は、実情に講じて、変更してください。(計算開始日、最終データ行など) Option Explicit Sub test() '定義 Const intYearDays As Integer = 365 '1年間の日数 Const strStartDay As Date = "2003/1/1" '計算する年の初日を指定 Const lngStartRow As Long = 2 '最初のデータのある行番号(見出し行をのぞく) Const lngEndRow As Long = 100 '最終データのある行番号 Const lngCol1 As Long = 1 '注文日の列番号(例:A列は1) Const lngCol2 As Long = 2 '納品日の列番号(例:B列は2) Const lngOutputCol As Long = 10 '結果を出力する列番号(空いた列を指定) Dim i As Long Dim lngRow As Long Dim myDate As Date Dim myValue As Long '処理開始 myDate = strStartDay '1日ずつなめる処理 For i = 1 To intYearDays  '全データをなめる処理  For lngRow = lngStartRow To lngEndRow   '納品待ち状態の判定と、納品待ち個数カウント   If (Cells(lngRow, lngCol1).Value <= myDate) And (Cells(lngRow, lngCol2).Value > myDate) Then    myValue = myValue + 1   End If  Next lngRow  '結果の書き込み  Cells(i, lngOutputCol).Value = myDate '日付見出し  Cells(i, lngOutputCol + 1).Value = myValue 'カウントした個数  '後処理  myDate = myDate + 1 '次の日へ  myValue = 0 '初期化 Next i End Sub

ggmknm
質問者

お礼

どうもありがとうございます! 作っていただいた仮定にデータを合わせたところ、うまく集計できました。 これから、ファイルに則して書き換えて使わせていただきます!! ここで、もう1つだけ追加で質問させてください。 C列に商品のカテゴリーが入っているとして(20種類程度)、そのカテゴリー別に集計させるにはどのようにすれば良いでしょうか。(11列目から右側へカテゴリー別に結果を表示させる。) お手数かけて済みませんが、よろしくお願いいたします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

私も#1の方のおっしゃっている方法でやります。しかし それほど単純ではないのでは。下記のような場合分けが要ります。 日曜・休業日をカウントしないとなると、更に面倒です。 下記は日数を計算することを意味しています。 納品日-注文日とするか納品日-注文日+1とするかは 業界・会社慣習で決めるのでしょう。     ┌-前年-----読み飛ばし(処理対象外     |            |         ┌-前年-1/1から納品日     |         |                ├-今年--注文日-|     |         |      |         └-今年(通常=     |             納品日-注文日 納品日-|     |         ┌-今年 注文日から12/31    |         |      |         |      └-翌年--注文日-|               |               └-翌年 (処理対象外 これを全件日数を加え、年間日数で割る。 これを関数式でやるのですかね。VBAでしょうね。

ggmknm
質問者

補足

ご意見ありがとうございます。 「各日の納品待ち数」の平均をとりたいので(最大、最小も)、やはり日ごとの合計が必要だと思います。 今のところ休日は無視。納品日は待機に含めないので+1は無しです。 関数でやるのは難しいでしょうか。(配列関数でうまくカウントできないか考えているのですが。。) もし、VBAで簡潔に処理できるようでしたら、ご指導ください。よろしくお願いいたします。

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.2

1年間の納品待ち商品数の平均をとるには、 毎日の納品待ち商品数データ(365個)が、必要になりますよね。 一番いいのは毎日入力の時点で、 「納品待ち」が何個あるか、逐一カウントして、 数値を毎日記録しておくのがいいんですけど、 これから集計するデータに、 そのようなデータが存在しないのならば、 計算してデータを生成しなければなりません。 関数ですると膨大な数の数式を入力しなければなりません。 やっぱりマクロ処理ですかねえ。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

(納品日-注文日)を総合計して年間日数で割ればいいのではありませんか。

関連するQ&A

  • エクセルのデータ抽出

    エクセルの関数について質問です。 ここに商品名、入荷日、個数が入ったデータベースがあります。 別のシートで商品名に対して個数をデータベースから引っ張りたいのですが その個数を引っ張る際に、入荷日を指定してその範囲の合計を表示したいです。 (例えば1年分のデータから3/1から3/15に入荷した個数を表示) VLOOKUPを使ってやろうとしていたのですが範囲を指定することが出来ません。 (=VLOOKUP(A3,'B'!$A$1:$K$1000,8,0)) ↑これで全体の合計を出すことはできました。 どなたかご教授いただけないでしょうか。 よろしくお願いします。

  • エクセルで集計をしたいのです

    お世話になります。 Accessからエクスポートした表があります。 (集計元表) [商品名]|[支店名]|[日付]|[売上数]| 商品A|支店1|2011/08/01|6| 商品A|支店1|2011/08/05|2| 商品A|支店2|2011/08/01|3| 商品B|支店1|2011/08/01|9| 商品B|支店2|2011/08/01|1| … これを以下のように、商品毎に表にしたいのです。 (集計表:商品A) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 6 | 0 | 0 | 0 | 2 | 8 | 支店2| 3 | 0 | 0 | 0 | 0 | 3 | 合計 | 9 | 0 | 0 | 0 | 2 | 11 | (集計表:商品B) 商品A|8/1|8/2|8/3|8/4|8/5|合計| 支店1| 9 | 0 | 0 | 0 | 0 | 9 | 支店2| 1 | 0 | 0 | 0 | 0 | 1 | 合計 | 10 | 0 | 0 | 0 | 0 | 10 | 合計の行/列は最後にsumしますが、集計元表から 集計表カドの商品名、日付、支店を判別してセルに売上数を収める 手段のヒントを頂ければ幸いです。 セル関数でもVBAでもなんでも構いません。 宜しくお願いします。

  • EXCELの集計で悩んでいます

    EXCEL2003で、 ・商品ID ・商品名 ・支店 ・在庫数 ・在庫金額 ・販売開始日 を商品IDごとに在庫数と在庫金額の集計を行いました。 行数は約1万、集計行は約1千あります。 ここまでは問題なく出来たのですが、 集計行には、商品ID集計として、在庫数と在庫金額の合計しかなく、 集計行のみにした場合、商品名と販売開始日が表示されません。 集計行に、商品名と販売開始日を追記するマクロを書きたいのですが (関数でもかまいません)、どなたかお知恵をお借りできませんでしょうか。 よろしくお願いいたします。

  • Accessのクエリによる集計が出来ない

    Accessのクエリによる集計が出来ない kamuycikapです。 OKWaveで様々な方のアドバイスを頂きながら、慣れないAccessと悪戦苦闘しております。 一昨日、計算したい表を作成する為にOKWaveに質問を載せました。 http://okwave.jp/qa/q5549286.html 無事に上記のアドバイスでリレーションのオプション設定を行い、集計計算したいクエリの結果を表示することが出来ました。 その表を元にして 下記の質問でアドバイス頂いた方法による集計を行おうとしたのですが、集計出来なくて困っています。 http://okwave.jp/qa/q5544785.html データベースの構成とキーは以下のとおりです。 --ここから <データベース構造:リレーションシップ> リレーションシップとテーブルの構成は下記の通りです。 -->がリレーションシップです。 Kがキーになります。 ■テーブルA      ■テーブルB    ■テーブルC    ■テーブルD K納品書コード --> K納品書コード --> K納品書コード  --> K納品書コード 仕入数          K商品コード  --> K商品コード   --> K商品コード                             K商品連番    --> K商品連番                             出品数量        K出品連番                             商品名           発送個数                             色             発送日付                             サイズ                             売値 ※テーブルCからテーブルDへのリレーションオプションを「’テーブルC’の全レコードと’テーブルD’の同じ 結合フィールドのレコードだけを含める。」としています。 <作りたいデータ> 納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量、発送個数、出品在庫数、倉庫在庫 <クエリ> ○グループ  納品書コード、商品コード、商品連番、商品名、色、サイズ、売値、仕入数、出品数量 ○合計(集計)  発送個数 ○出品在庫数(演算)  [出品数量]-[発送個数] ○倉庫在庫(演算)  [仕入数]-[発送個数] <データ状況> テーブルCのデータは約300レコードありますが、そのうち20件ほどしか商品が発送されていない為、テーブルDのデータは20件しかありません。 <望む結果> テーブルCのデータが全て表示され、紐つけられたテーブルDのデータがが存在する場合は、発送個数を表示し出品在個数を演算する。 演算した出品在個数を利用して、倉庫在庫も演算する。 <クエリの実行結果> テーブルCのデータが全て表示され、テーブルDに紐つけられたレコードも表示されるが、テーブルDに入力されている20件のデータが商品連番(テーブルCのフィールド)ごとに集計されない。 --ここまで <目的> お店に出品された商品は、日を分けて少しずつ売れていきます。(一日で全部売れることもありますが....) 従って、出品された商品(テーブルCのデータ)に対して売れていく数(テーブルDの複数のレコード)のデータがぶら下がっている形になります。 このようなデータベースですので、出品した商品が何個売れたかを計算する為には、商品に対する売れた個数を集計(合計)しなければなりません。 <結果> テーブルCの商品連番ごとの発送個数を集計したいのですが、テーブルDの出品連番ごとの集計になっている様子です。 <頂きたいアドバイス> 上記のデータベースとクエリで、テーブルCの商品連番に紐ついたテーブルDに格納されている発送個数の合計値を集計するための方法 以上、識者の方のアドバイスをお願い致します。

  • エクセルの集計機能について

    エクセルの集計機能を使う事を最近知りました。 そこで質問なのですが、集計機能で抽出する「集計の方法」があるのですが、抽出するデータの「合計・データの個数・平均・最大値・最小値」をすべて表示させたいのですが、そのような方法はあるのでしょうか? <例> 集計→集計の方法(合計)の場合の表記です。 店名 商品名 数量 1 サティ G社 30 1 サティ G社 1 サティ 計 31 2 ビブレ C社 5 ビブレ 計 5 3 ジャスコ M社 6 3 ジャスコ M社 2 ジャスコ 計 8 総計 44 上記の例では、合計しか抽出されていないのですが、サティでの「合計・データの個数・平均・最大値・最小値」を表示させたいということです。

  • データの集計について

    ホームページのアクセス数をデータベースにしているのですが 以下のようなことがしたいのですが どのような方法があるか教えてください 宜しくお願いします 日付    0時  1時  2時 …(23時まで) ―――――――――――――――― 02/06/01  10  20  30 … 02/06/02  20  20  40 … … ―――――――――――――――― ↓時間別で集計する 時間 合計 ―――――― 0   30 1   40 2   70 … (23まで) ――――――

  • エクセルで注文書を作成発注しています。そのデータを入荷一覧表を作成した

    エクセルで注文書を作成発注しています。そのデータを入荷一覧表を作成したいのですが、教えて下さい 業務上で、予めあるエクセルで作った注文書を取引先毎ににパソコンからFAXしています。 各取引先への注文書は統一しております。その注文書を印刷し、今は入荷一覧表に入力しています。 その作業を改善したく、注文書に打ち込んだと同時に別に作った入荷一覧表に跳ね返す事ができたら と思いますが、計算式がわかりません。 何方か、教えていただけませんでしょうか? <注文書の内容>(エクセル画面)   A   B  C 1 得意先A 2 商品名 数量 納品日 3 醤油   1 9/1 4 砂糖   2 9/4   A   B  C 1 得意先B 2 商品名 数量 納品日 3 味噌   1 9/2 4 塩    2 9/5 <入荷一覧表>   A   B  C  D  E  F   1 商品名 9/1  9/2 9/3 9/4 9/5     2 醤油  1 3 砂糖            2  お願い致します。

  • アクセスでデータを横に並べる方法

    アクセス2003を使って注文管理のデータベースを作っています。 テーブル「納品データ」のデータを発注番号ごとに納品日と納品数を横に並べたものを作りたいのですが、集計クエリでやってみてもうまくできませんでした。過去の質問の中にも似たようなものがあったのですが、一部理解できない箇所があったりして方法が分からなかったため、質問させていただきます。 ■テーブル「納品データ」 |納品番号|発注番号|納品日|納品数|   1     1   04/01  5   2     1   04/02  4   3     1   04/03  3   4     2   04/06  8   5     2   04/08  7   6     3   04/04  6   7     3   04/07  5   8     3   04/09  4   9     4   04/05  7   10     4   04/08  8 ■今やろうとしているもの 発注番号|納品日|納品数|納品日|納品数・・・  1   04/01  5  04/02  4  04/03 3  2   04/03  8  04/04  7    3   04/02  6  04/03  5  04/04 4  4   04/02  7  04/03  8 うまく表形式でできなくて、ズレていてすみません。 最終的には、これをサブクエリとしてメイン-サブの親子レポートを作成しようと思っています。

  • エクセルの集計表について

    エクセルで下記のような表があります。 商品コード  商品名   A店(個) B店(個) 12      いちご   3      2 66      バナナ   6      20 12      いちご   55      4 55      メロン   12      9 66      バナナ   100      15 12      いちご   99       38              ↓ 商品コード  商品名   A店(個) B店(個) 12      いちご 合計             157    44 55      メロン 合計             12      9             66       バナナ    合計             106    35 集計表を使って、商品ごとにA店とB店の個数合計を出すのですが、 個数合計が出た行のみを、一括で書式を変えるにはどうしたらよいでしょうか? 商品は、100種類くらいあって、すべてのデーターの数は、3000くらいあります。 合計の列だけを抽出して、ドラックしてコピーしても、その間にあるすべての列が変更されてしまうので。 エクセルは、あまり詳しくないので、詳しいかたどうぞよろしくお願いします。

  • excelでのデータ集計

    エクセルで、合計を出すために、データ集計を使いました。 それを別のシートにコピーすると、集計された行だけを貼り付けたいのに、集計もとの、合計の行以外の行もコピーされてしまします。 集計した行だけを抽出し別シートにコピーしたいのですが、できますか?

専門家に質問してみよう