• ベストアンサー

EXCEL表を関数で集計する方法を教えてください

以下のような表があるとします。 会社名 日付  金額 A社  9/1 10,000 A社  9/1 30,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 30,000 C社  9/4 20,000 C社  9/5 30,000 C社  9/5 20,000 これを、以下のように、会社名と日付で集計したいのですが 会社名 日付  金額 A社  9/1 40,000 A社  9/3 20,000 B社  9/1 10,000 C社  9/4 50,000 C社  9/5 50,000 関数でやる方法をお教えください。 よろしくお願いします。

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

  • ベストアンサー
  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

一番上のデータが セルA2……A社、セルB2……9/1、セルC2……10,000 だとすると、セルD2に =IF(AND(A2=A1,B2=B1),"",SUMPRODUCT((A$2:A$9=A2)*(B$2:B$9=B2)*(C$2:C$9))) と入力し、あとD列下方にプルダウンコピーします。 これは基本的にはmshr1962さんの回答と同じですが、最初に IF(AND(A2=A1,B2=B1),"", を入れたのは、D列に同じ答え、例えばA社、9/1、50,000がD2、D3に重複して計上されるからです。 ただし、この式が成り立つためには、データを第1順位「日付」、第2順位「会社名」の順に並べ替えておくことが条件で、そのようになってない場合は別の関数を使用する必要があり、かなり複雑になるので、ここでは省略します。 なお、余計なお節介ですがmshr1962さんの回答式のSUMPRODUCTの次に、最初の「( 」が1個脱落していたため、もしかしたら戸惑われたかも知れないので、老婆心ながら付け加えておきます。

kt1
質問者

補足

お二方とも、ご回答ありがとうございます。 お教えいただいた方法で、見事に望んでいたことができました。 大変助かりました。 しかし、わからないことがありますので、追加で教えてください。SUMPRODUCTの働きについてです。 SUMPRODUCTという関数は、2つの表を掛け合わせ、その合計を出す関数だと思っておりました。使い方としては、SUNPRODUCT(範囲1,範囲2)といった具合で。 今回のような使い方は初めてみました。 SUMPRODUCTの中で、A列とB列とC列を掛けると、どうして、その合計がでるのでしょうか? よくわかっていないので、質問自体もピントはずれかもしれません。 どうか、素人にわかるように、お教えください。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

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

#1のmshr1962です。 通常SUMPRODUCT関数は 売上=SUMPRODUCT(単価,数量) のような範囲同士の乗算に使います。 ただここに"範囲"でなく"範囲の条件"を設定することで COUNTIFやSUMIFと同様の計算が可能になります。 "範囲の条件"は結果がTrueかFalseの論理値になりますが *で複数の条件を加える(And条件)ことで1,0の数値に置き換えることができます。 SUMPRODUCTの場合は複数の条件でも設定が可能なので覚えておくと便利です。 例 =SUMPRODUCT(($A$2:$A$99="A社")*1)=COUNTIF($A$2:$A$99,"A社") ※条件が単独の場合は*1で1,0への置き換えが必要です。 =SUMPRODUCT(($A$2:$A$99="A社")*($B$2:$B$99))=SUMIF($A$2:$A$99,"A社",$B$2:$B$99) 同じ内容の種類をカウントする場合 =SUMPRODUCT(1/COUNTIF($A$2:$A$99,$A$2:$A$99)) ※サンプルのデータならA社、B社、C社の3件なので3が表示されます。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

=SUMPRODUCT($A$2:$A$99=会社名のセル)*($B$2:$B$99=日付のセル)*($C$2:$C$99)) の様にすればOK ただし、メモリを食うので少し遅くなります。 ピボットテーブルの方が楽だと思いますが...

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excel2013で集計表との連動さすには、、><

    多分、関数なんかを使ったら簡単なんだと思いますが 緊急なんでよろしく御願いします。  エクセルのシートを何枚か開きデータを連動させます。 一枚目が集計表で個々人に請求する個々の金額を打ち込んで 行きます。(全体の金額の集計)  2枚目から各家庭に請求する金額に反映させる創りになっているのですが 式が複雑でどこを直したら反映するのか判りません。  =INDEX(集計表!$C$7:$N$14,MATCH($B$3,集計表!$B$7:$B$14,0),MATCH(B10,集計表!$C$6:$N$6,0)) という式です。多分関数を使うとこんな複雑になるんだと思います。  単純に  =集計表!$H$7 とやってもいいようなもんですが何かメリットがあるのでしょうか? またやり方を教えて下さい。 今晩仕上げたいのでけっこう緊急です、、。

  • 集計表に関数を入れて運送料金を出したく関数をネストして作ったりしてみま

    集計表に関数を入れて運送料金を出したく関数をネストして作ったりしてみましたがどうしてもできません。 内容としては運送会社、A社とB社があり、A社の中でも2種類の金額があります(B社は1種類) 集計表の運送会社A社に○が入り、なおかつ商品NO.1もしくは2が入ったときは500円、3~5が入ったときは300円、宅配業者B社に1が入ったときは1000円としたいときはどのようにすればよろしいのでしょうか? よろしくお願い致します。

  • 日付と商品名の2つの条件で集計

    A列に商品名(2~10行)、B列に金額(2~10行)、C列に日付(2~10行)の表で日付範囲条件と商品名の条件の両方満足する行の金額を集計したいのですが方法を教えて下さい。日付の集計はSUM,DATE関数で、商品名のみの集計はSUMIF関数で求めることができますが両方の条件式がわかりません。よろしくお願いします。

  • EXCELのDSUM関数で集計条件に日付を入れると数字が消える

        B列      C列     D列   E列      F列      G列 1行  日付      区分    金額   集計する条件 2   2000/1/1   A社   1000    区分     日付      日付 3   2000/1/10    B社    500   A社    >=2000/1/1  <2000/2/1 4   2000/1/15    A社    300    5   2000/2/5   A社     200    集計結果 6                        =DSUM(B1:D5,3,E2:G3) 上記のような表をEXCELで作成しました そのうちA社の1/1~1/31の金額をDSUM関数を利用して集計したく 上記のようにDSUM関数に引数を入力しました しかし集計条件が区分のみ(E2:E3)だとA社の2/5までの合計額1500が反映するのですが、日付を入れた途端に0になってしまうのです ちなみに、一例として日付→商品区分に直して日付の代わりに 「機械」「部品」といった文字を入力してみると ちゃんと条件通りの集計をしてくれます 日付の入力のしかたに間違いがあるのでしょうか? テキスト見ながらちゃんとやってると思いこんでるだけで 落とし穴にはまってるのだと思います 是非良きアドバイスをお願いします  

  • Excel関数(SUMIFの応用?)

    いつも参考にさせて頂いています。 現在、ある集計表をつくっていますが集計用の関数がわからなくて困っています。 <表の内容> ・セルA1:「ランク」 ・セルA2~A10:「A」or「B」or「C」を入力している ・セルB1:「要望」 ・セルB2~B10:「あり」or「なし」or「不明」を入力している ・セルC1:「金額」 ・セルC2~C10:各金額を入力している <集計> ・セルC11に「ランクが"A"」かつ「要望が"あり"」の金額合計を表示 ・セルC11に「ランクが"C"」かつ「要望が"なし"」の金額合計を表示 ・・・等々 この集計にはどのような関数を使えばよいでしょうか? 表を利用する者がDatabase関数は理解していないので、Database関数以外で使えるものがありましたら、教えてください。 今はD列に「=A2 & B2」のような式を入れて「=SUMIF(D2:D10,"Aあり",C2:C10」として集計していますが、もう少しスマートな方法があれば、教えていただきたいと思います。 どうぞよろしくお願いします。

  • Excel関数で集計をしたいのですが

    下のような表があり、Excelで有効期限のあるポイント(現在から過去一年間)の集計をしたいのですが、    A      B        C        D         E 1 名前  2004/01/24  2008/03/15  2008/08/02   1年間有効 2 太郎     2        3        2         5 3 花子              2                  2 Eの列に集計を出したいと思いますが、関数で出すことは出来ますでしょうか? 宜しくお願いいたします。

  • EXCEL 集計を関数でやりたい

    メニューのデータ⇒集計でできることを関数でやりたいのですが、できますでしょうか? A列に会社名、B列に金額が入力されています。 会社名は複数回出てきます。会社名毎に、B列の金額を集計したいと思っています。 よろしくお願いします。

  • SUMIF関数で解決出来ますか(集計方法)

    例えば A列    B列 会社名   金額 というような表があるとします。 会社名のデータが不特定多数で、重複する会社名 も存在するとします。 会社ごとに集計をするのに、SUMIF関数を使う方法 を考えましたが、会社名が少なければ、条件を 入力するのも苦になりませんが、会社名がたくさん ある場合、条件を入力するだけでも大変です。 (存在する会社、すべての集計をしたい場合) 何かいい集計方法はありますでしょうか? ピポットテーブル、オートフィルタの機能は 使用したくありません。備考程度に、データの 集計結果が得たいと考えています。

  • 年間ごとの集計を求めたいのですが

    単純な入出金表があり、数年に渡っての取引が記されています。支出と入金を年毎で算出したいのですがExcel関数で出来ますでしょうか。 表は以下の様になっています。    A     B     C      D 1  日付   名前   支払金額  入金金額 2 2000/1/3  〇〇         30,000 3 2000/2/10  〇〇   15,000 4 2001/3/5  〇〇         10,000 5 2001/12/3  〇〇   10,000 6 2002/6/4  〇〇          5,000 元表には手は加えず(集計・並べ替え等)参照するのみにしたいと考えています。   SUMIF関数やVLOOKUP等考えたのですが上手くいきません。皆様御教授御願い致します。

  • 【EXCEL】条件+上位○位までを集計したい

    以下のようなデータがあります (列)a,b,c 2,aaa,1000 2,bbb,1500 2,ccc,800 3,ddd,1000 3,eee,1500 3,fff,800 a=コード、c=金額 ここで以下の条件で集計したいのです。 「コードが2のもので上位2位までの金額を集計したい」 このような事を関数で行うとどうなりますでしょうか。 調べましたがお手上げでした。 すみませんが宜しくお願いします。

専門家に質問してみよう