Excel2003の関数で複雑なsumproductを使用してデータを集計する方法

このQ&Aのポイント
  • Excel2003の関数を使用して、指定した日付範囲内のIN/OUTデータを集計する方法を教えてください。
  • さらに、集計結果をMakerごとに小計し、その後、Statusごとにさらに小計する方法も教えてください。
  • 試したsumproduct関数による集計方法が正しく機能していないため、手詰まりになっています。
回答を見る
  • ベストアンサー

やや複雑なsumproduct(日付範囲指定など)

Excel2003の関数で質問です。 まずは元データから。。 A     |     B |            C |        D | IN/OUT   Maker        設置日     Status OUT   DELL        2005/1/11     設置(新規) OUT   DELL         2005/1/28     設置(交換) IN     DELL          2005/1/31   回収(退職) IN     NEC            2005/2/1   回収(退職) OUT   IBM         2005/2/28     設置(新規) OUT   NEC         2005/3/1     設置(新規) IN     DELL         2005/3/9     設置(交換) 上記のテーブルより次の表を作成したいのですが、関数をどう埋め込んだらよいのか路頭に迷いました。 1.IN、OUTを月別に集計 2.1をさらにMaker別に小計を出す 3.2をさらにStatus別に小計を出す  1.=sumproduct(COUNTIF($A$2:$A$8,"OUT")*COUNTIF($C$2:$C8,">2004/12/31","<2005/2/1"))   と試行。   見事に数式エラー  2と3は1の拡張版と思われますので、手をつけられません。   聡明な皆様の知恵を拝借できれば幸いです。

  • Yepes
  • お礼率94% (1652/1746)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

1.=SUMPRODUCT($A$2:$A$8=IN/OUTのセル)*(MONTH($C$2:$C$8)=月のセル)) 2.=SUMPRODUCT($A$2:$A$8=IN/OUTのセル)*(MONTH($C$2:$C$8)=月のセル)*($B$2:$B$8=Makerのセル)) 3.=SUMPRODUCT($A$2:$A$8=IN/OUTのセル)*(MONTH($C$2:$C$8)=月のセル)*($B$2:$B$8=Makerのセル)*($D$2:$D$8=Statusのセル)) ただ#1の方の言われるようにピボットテーブルを使ったほうが楽だと思います。 日付、Maker、Statusを行のフィールドに、IN/OUTを列のフィールドとデータ(データの個数)に設定する。 日付のフィールドを右クリックでグループ化を月で指定する。

Yepes
質問者

お礼

ありがとうございます。 関数より確かにピボットを使いこなすほうがはやみちのようですね。 がんばります。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

聡明ではないですが・ 1月のOUTの件数 =SUMPRODUCT(("OUT"=A2:A8)*(1=MONTH(C2:C8))) 参照元範囲を絶対参照にして、 月の指定の部分をrow()にするといいかも

Yepes
質問者

お礼

ご返答ありがとうございます。できました!!気持ちよく新年を迎えられ、感謝です。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ピボットテーブルで出来ませんか?

Yepes
質問者

お礼

ありがとうございます。いままで避けてきたのですが(ピボット)勉強してみます。

関連するQ&A

  • Excel 範囲指定

    例えば、次の関数について。 =COUNTIF(K2:K6,"1") 範囲をK2:K6だけではなく、A2:A6、C2:C6も指定したいのですが、 行や列が飛んでしまうと、うまく範囲指定できません。 どうすれば一緒の範囲にできるのでしょうか?

  • SUMPRODUCTでしょうか?

    A列 B列 C列 名 目標 実績 いちご 100 123 ぶどう 120 115 みかん 110 130 ばなな 110 120 人数 上記の表があり、実績(C列)が目標(B列)を上回った人数を関数を使ってカウントして、人数欄に表示したいです。 どのように求めたらいいのでしょうか? SUMPRODUCT関数かCOUNTIF関数かなと思ったのですが、どのように作成すればいいのかわかりません。 教えて下さい。よろしくお願いします。

  • 関数で指定した範囲を一度に変更できますか。

    エクセルの関数のことで質問があります。 COUNTIF関数を使って都道府県別の人数を調べています。 最初に作ったときには280個のデータだったのですが、増えました。 そこで、47都道府県分すべて直すのが面倒くさいのですが。。 関数に指定した範囲を一度に直すことはできるのでしょうか。 説明下手なので、、、一応。。 「=COUNTIF(A1:A280,"北海道")」 ↑コレの「C280」の部分を47都道府県分全て一度になおしたいのです。

  • SUMPRODUCT関数とCOUNTIF関数

    A-001 A-001 A-002 A-003 B-001 B-002 A-001 C-001 C-002 とあったときに仮に9個の製品コードであるとして、 A-001は3回でてきていますので種類としては7種類の 製品コードということになります。 "質問:様々ある素材のうち重複しているものは1つだけカウントして上記の7というような値を求める関数がありますか?" 以前このような質問をし、 ”=SUMPRODUCT(1/COUNTIF($A$1:$A$9,A1:A9))” との回答をいただきました。回答通りにやると値が求められました。とても大助かりでした。 そこで、関数のヘルプで どういう関数かを勉強しましたが僕には理解できませんでした。配列とかなんとかやらでてきて……超ムズイ!! だれかこんな僕にとても分かりやすいことばで SUMPRODUCT関数とCOUNTIF関数を教えていただけませんか?EXCELのヘルプは難しすぎる…… 宜しくお願いします。

  • Excelで、別シートへの条件付コピー(入出荷データを在庫データへ)

    こんにちは。Access使いからすると朝飯前の内容かもしれません、、 以下ような内容のリレーショナルをExcelにて行う方法をご存知でしたら教えてください。 テーマ:PC入出庫データを都度資産データへ反映 <例> 1.入力 入出庫データ(シート名:In_out)    A    |B  |C |D    資産番号|日付|status|User Code 10   001 |1/1 |設置 |ABC * * 300  001 |3/31|回収 |ABC 2.反映 資産データ(シート名:master) 上記「入力」の10行目が入力されると    A    |B  |C |D    資産番号|日付|status|User Code * * 100  001 |1/1 |設置 |ABC 300行目が入力されると    A    |B  |C |D    資産番号|日付|status|User Code * * 100  001 |3/31|回収 |ABC となるように、 入出庫データ(シート名:In_out) を入力した時点で 資産シート(Master)の 資産番号が一致するものを検索して、In_outの列BCD 値を Msasterの列BCDへ反映したいのです。 データは入出庫:1万件 資産:三千件程度です 識者の方の知恵がお借りできれば幸いです。 Accessへ乗り換える予定ですが、開発までやや時間がかかるので(来年2月)その間に、手入力でコピペするのも非効率なので、マクロまたは関数で解決できないものかと思い、質問させていただきました。 よろしくお願いします。 ちなみに、Excel2003です。

  • sumproductとcountifの使用例

      A B C D E 1 あ あ あ が い 2 い う か ぎ え 3 う い さ ぐ ん 4 え え た げ あ 5 お お な ご げ =SUMPRODUCT((COUNTIF(A1:D5,E1:E5)>0)*1) 上記は重複している個数が何個あるか(同じデータが複数回でてきても1個とカウントする)を出す関数なのですが、 sumproductとcountifの部分は大体理解できるのですが、 「>0」の部分と、「*1」の部分がどうしても理解できず、悩んでいます。 内部ではどういう計算が行われているのでしょうか? どなたかお知恵をお貸しください。 よろしくお願いいたします。

  • 日付データセルの日付範囲によるセル数を求める

    A1~C5セルにランダムに日付を入力したデータから、ある範囲の日付のセルの個数を求める方法はありますでしょうか。データが数字とか文字の場合は=COUNTIF関数で求めることが出来ましたが日付の場合うまくいきません。求める日付の範囲は(当日+15日~当日+8日)の範囲のセル数をD8セルに記入したいのですが・・・・なお、よけいなことかもしれませんがA1~C5セルの中には文字セルも含まれています。またデータセルは条件付き書式で( )内範囲のものは着色セルにしています。WIN98でエクセル97を使用しています。よろしくお願いいたします。

  • エクセルの複雑な連番入力の関数について

      A B C列 1 1 1  2 1 1  3 1 2  4 1 3  5 1 3  6 1 3  7 2 1  8 2 2  9 2 2 行 エクセルに上記のように数が並んでいる場合に、C列に   A B C列 1 1 1 1  2 1 1 2 3 1 2 1 4 1 3 1 5 1 3 2 6 1 3 3 7 2 1 1 8 2 2 1 9 2 2 2 行 と関数で入力できる式を作りたいのですが、なかなか思いつかず困っています。 仮にA列なしで、B列からC列を作るだけならCOUNTIF関数で問題なくできるのですが、、、 初歩的な質問ですみませんが皆様のご協力をお願いいたします。

  • VBA)範囲指定した全セルに関数を入れたいのですが。。。

    当方、始めてのマクロ作成に奮闘中の身です。 ご教授いただきたく、質問させていただきます。 ◎質問 範囲指定した全セルに関数を入力したいのですが、アクティブセルのみにしか関数が入らず困っています。    Dim abc As Integer       abc = Sheets("シート名").Range("A1").CurrentRegion.Rows.Count    Range(Cells(2, 12), Cells(abc, 12)).Select    ActiveCell.FormulaR1C1 = "=COUNTIF(R1C1:RC[-11],RC[-11])" 一番下の部分の関数を入力したいのですが、アクティブセルのみの入力になってしまい、下から2番目の指定範囲には反映されません。 下から2番目の指定範囲セル全てに適用するにはどうしたら良いでしょうか。 よろしくお願いいたします。

  • 日付の

    WindowsXP Office2003 です。 エクセルで20シート位に同じ形式の表があります。 各シートのE3:E14には、日付を入れ J3:J14には、=IF(E3="","",TEXT(E3,"m"))  〈E3 ⇒ E14 と相対値です〉 と入れてあります。(月を数値として表示させたかった為) この表は必ずE3が4月○日、E4が5月○日になるとは限りません。 シートによっては、E3が5月○日や6月○日になったり E3が8月○日、E4が8月△日と 同じ月が2回入力される場合もあります。 それを集計シートのC3~C14に 全部のシートの4(月)は○個 5(月)は○個・・・ という集計を出したいのです。 集計シートのA3~A14に検索値として 4 5 6 …省略… 12 1 2 3 と(標準書式で)入れてあります。 C3セルに =COUNTIF(sheet1!$J$3:$J$14,A3) と入れるとヒトツのシートだけですが4(月分)の個数が出ました。 しかし、 =COUNTIF(sheet1:sheet20!$J$3:$J$14,A3) と入れると#VALUE! となってしまいます。 3D集計のように全シートの集計はできませんか? 又、 各シートのJ3:J14にTEXT関数を作る必要がない方法はありますか? (日付が入力してあるセルからダイレクトに COUNTIF等で月の個数を数えられる方法)  よろしくお願いします。

専門家に質問してみよう