• ベストアンサー

エクセル 行数の異なる合計範囲

例えば   A   B   C    D 1 日付 品名  金額  小計 2 3/1  A商品  500  1800 3     B商品  800 4     C商品  500 5 3/2  B商品  500  500 6 3/3   A商品  300  300 というように次の日付が入るまでの合計(日ごとの集計)をD列に出したい場合に何か関数はありますでしょうか。 ちなみに日付ではなく文字列のパターンもあります。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.3

「どうしても」ということであれば、やってやれないことはないのですが… ●甲案:作業列を使う  E2セル: =IF(A2<>"",A2,E1)  F2セル: =IF(A2<>"",SUMIF(E:E,E2,C:C),"") として、  E2:F2を下方にフィル⇒E列を非表示にする ●乙案:数式一発で  E2セルを、   =IF(A2="","",SUM(OFFSET(C2,,,MIN(INDEX(MOD((A3:$A$999<>"")*ROW(A3:$A$999)-1,2^16),))+1-ROW(A2))))  として下方にフィル -------------------------------------------------- 以上前置き。以下本題の「アドバイス」です。 もし日付欄が普通に埋まっていれば、 いちいち作業列を用意したり、 いちいち数式をひねくり回す必要はありません。 日付欄が詰まっていると見にくいということであれば、 [条件付き書式]を使って、 「上隣のセルと同じ日付であればフォント色を白」と設定すれば、 見た目は空白になり、スッキリします。 同じ日付を繰り返し入力するのが面倒ということであれば、 上記のように条件付き書式を設定した上で、 あらかじめ A2セルを、=A1 としてフィルしておけば、 日付を入力したセルのみが黒字で表示され、 そのセル以下には自動的に直近の日付と同じ日付が入ります。 Excelは、工夫次第でいろんな使い方ができる一方で、 開発者が想定する「普通の使い方」というものがあって、 機能にしろ関数にしろそれに合わせて設計されていますから、 結局、「普通にやるのが一番ラク」なのです。 以上ご参考まで。

ore-summer
質問者

お礼

なるほど。 数式でばかり考えていましたが条件付書式なら見た目を白にすれば同じことですね。 最初はIF関数でやってたのですが階層が7つまででしたので8行以上ある場合に書き換えたりして面倒だったのでもっと簡単な数式ができないかと考えあぐねていました。 一度、やってみます。

その他の回答 (2)

  • tama1978
  • ベストアンサー率24% (57/237)
回答No.2

#1です。 そうです。 私の関数計算は、 同じ日付かどうか確認してから、合計の解を出しているので、 そうなります。

ore-summer
質問者

お礼

そこは空白にしたかったので別のやりかたがあるのか参考にしたかったのですがやはり日付をいちいち入力しないと難しいようですね。ありがとうございました。

  • tama1978
  • ベストアンサー率24% (57/237)
回答No.1

関数のみで行うとした場合ですが、 日付の欄には、必ず日付を入れましょう。 Dのセルの欄には、 D2セルに =IF(A2<>A1,SUMIF(A:A,A2,C:C),"-") を入力 その後は、このD2セルを下まで伸ばして、関数をコピーしましょう。 これで、可能かと思います。

ore-summer
質問者

補足

>日付の欄には、必ず日付を入れましょう。同じ日でも とは 3/1 3/1 3/1 という意味でしょうか?

関連するQ&A

  • エクセル 異なる範囲の集計(合計)

    誰かアドバイスをお願いします。 エクセルで下記の様な異なる行数(範囲)を自動集計させたい場合はどうすればよろしいでしょうか?       A      B      C     D        E      日付    注文NO  金額   注文金額計  日別注文金額合計 1   5月1日     1     50     150       250 2                  50       3                  50                4             2    50     100 5                  50                    6   5月2日     3     50     50        150 7             4     50    100 8                   50                                            やりたい事は、D列へ注文金額計に注文NO別の合計金額を集計させる事(注文NOごとの一番上の行のみです。)  と E列へ日別の注文金額合計を集計させる事です。(日別の一番上の行のみに表示)   sumif関数を使えばうまく行きそうなのですが、問題が2つあります。 (1)集計条件の日付や注文NOは、重複している場合は、一行のみ表示の仕様です。(他ファイルからデータを貼りける為、その様な仕様になり、極力入力する事は避けたいです。) (2)合計範囲の行数が一定ではないので出来ればEやD列の全てのセルに関数なりを設置し、一番最上行のみに結果を表字したい。例えばsumif関数をE,D列全ての行に設定してしまうと同じ集計結果が何行にも渡って表示されてしまうのは避けたい。(上の例でいえばE列に150が何行も表示されてしまう。 かといって重複行の最上行のみに関数を設定するのは、一行ずつの作業になってしまう為、避けたい。 何かいい方法がないでしょうか?   個人的には、関数の方がやりやすいのでいいのですが、マクロやVBEでもあれば教えて頂けますでしょうか?

  • エクセル関数でA列(品名)D列(金額)・・品名ごとに合計

    A列に品名があり、D列に金額があります。   A   B   C   D 1 商品1        ¥100      2 商品2        ¥150 3 商品1        ¥100 4 商品3        ¥200 5 商品2        ¥100 求めたい答えは各商品ごとの合計金額なのですが、関数で可能ですか?(VBAになりますか?)  商品1  ¥200  商品2  ¥250  商品3  ¥200 宜しくお願いします。(アクセスでやれと言われそうですが・・)

  • SUBTOTAL関数の不思議

    SUBTOTAL関数で期待する合計が出せません。 A列   B列   C列   D列 品名   数量   単価   金額 A     1    100    100 B     2    200    400 C     3    300    900 小計               0 →ここが期待どおりでない D2セルの式は =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) でD5までコピーしました。 つまりA列が"小計"でないときは数量×単価を、"小計"と入力されていたらD2:D4をSUBTOTALで集計するつもりなのに結果が0になってしまいます。 ちなみにD5に =SUBTOTAL(9,D2:D4) と手入力しても結果は0でしたが、D列に金額を直接入力すれば小計は正しく表示されます。 理由がおわかりの方、教えてくださいませんか

  • 抽出結果で、合計と最新日付を得るには?

    ----A-----B-----C--- 1 07/01 商品A 1,000 2 07/02 商品A 2,000 3 07/02 商品B 3,000 4 07/03 商品A 4,000 --------------------- のように、日付・品名・金額の列があり、 「商品A」の合計金額と、その合計した明細の最新日付を 出したいのですが、どうすればいいのでしょうか?

  • Excelで条件に合うデータをピックアップして合計を求めたい

    下記のような条件で合計を求めたいのですが、 SUM関数やSUMIF関数では、求めている合計が得られません。 例) 行/列 A   B    C  1|  No. 金額   氏名 2|  1  200,000  A 3|  1  200,000  B 4|  1  200,000  C 5|  2  150,000  A 6|  2  150,000  D 7|  3  180,000  B 8|  3  180,000  D 9|  3  180,000  E 10| 小計  上記のようなデータがあります。 B列には、Noごとに、それぞれ同じ金額が重複して入力してあります。 ここから、Noの最初の金額である200,000+150,000+180,000=530,000 という合計を10行目に求めたいのです。 現在は、自分でNoを確認しながら、その都度、 合計したいセルを選択して合計を求めているのですが、 データ数が多いため、何か別の方法がないかと思案しております。 どなたか、アドバイスの程、宜しくお願いします。

  • エクセルで複数のセルの合計をIF関数も含めて出す方法

    初歩的だと思うのですが・・ 異なった文字が入った各セルの合計を別セルにてIFを使用し、数字を出しながらなおかつ集計する方法がわかりません。  A   B    C   D 1 い   ろ 2     は   に   3 ほ       4 へ   と 5 A列に文字が入ると常に 500 B列に文字が入ると常に 200 C列に文字が入ると常に 100 として、D列にA-Cの合計(何もなければ空欄)を出したいのです。この場合だとD1=700, D2=300, D3=500...となるように。 IF(A1="","",500)+IF(B1="","",200)+IF(C1="","",100) のちゃんとした関数式を教えてください。よろしくお願いします。。

  • Excelの条件検索による合計計算

    ExcelでA列に日付、B列に商品名、C列に売上金額を入れて、日々の売上管理をしています。最大でも500行と仮定します。 B列のりんごの合計、みかんの合計など商品ごとの合計を算出したいと考えています。B列の商品ごとの合計です。 この場合には、どの様な関数・数式を使用するのでしょうか? 宜しくお願いいたします。

  • 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になってしまうのです ちなみに、一例として日付→商品区分に直して日付の代わりに 「機械」「部品」といった文字を入力してみると ちゃんと条件通りの集計をしてくれます 日付の入力のしかたに間違いがあるのでしょうか? テキスト見ながらちゃんとやってると思いこんでるだけで 落とし穴にはまってるのだと思います 是非良きアドバイスをお願いします  

  • エクセルの日付関数について教えてください。

    エクセルの日付関数について教えてください。 A列には日付が入力されています。 B列には金額が入力されています。 C列にも日付が入力されています。 A1に入力された日付(例:2010/4/30)とC1に入力された日付(例:2010/4/30)が同じ日付のときだけ、B列の金額を抽出しD10に合算させたいと考えています。 ***【サンプル】*****************************    A   B   C   D 1 4/30  100  4/30 2 4/30  200  4/30 3 5/1   100   4 5/2   200  5/2 5 5/2   100  5/2 6 7 8 9 10            同じ日付(1)の合計 11            同じ日付(2)の合計 ******************************************* 上記の場合のD10やD11の関数は、どのような関数に すべきでしょうか? どなたかご教授をお願い致します。 【環境】 WindowsXP Pro Excel 2003

  • Excelで2列のキーワードからのデータを合計するには?

    A列に日付、B列に支店名、C列に商品名、D列に売上金額が売上ごとに入ってます。 ある支店の売上の合計にはSUMIF(支店名)を使っていますが、ある支店の(且つ)ある商品の売上の合計はどうやって計算すればいいのでしょうか?フィルターやピボットテーブルでなく関数を使いたいのですが。 初歩的な質問ですみませんがよろしくお願い致します。

専門家に質問してみよう