• ベストアンサー

エクセル期間の金額の合計を出したい

御世話になります。 条件としてA列に日付がランダムで並んでいます。 B列にその日付の売上があります。 行いたいことは月毎の売上グラフを作成をしたいのです。 今までは月の末日にフィルターで期間内の行を抜き出し 合計をしてグラフを作成していました。しかし月が変わ った後で売上が変更になることがあり、その度に同じ作業 して数値を変更していました。ですのでB列の値を変更 すると、グラフを自動的に修正が行われるようにしたい のですが・・・ 宜しくお願いします。

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

  • ベストアンサー
回答No.6

#4のDoragonFangです。 年を考慮するのを忘れてましたね。 この場合は、年を判定する式を組み込めば、出来ると思います。 具体的には、 =SUMPRODUCT((YEAR(A2:A8)=2004)*(MONTH(A2:A8)=10)*B2:B8) とすれば、2004年の10月のデータの合計が求まるはずです。

denim777
質問者

お礼

お答えありがとうございます。 関数が1番シンプルでしたので 使用させて頂きました。 これで効率アップです。 今回は非常ありがとうございました。

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

その他の回答 (5)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

こんにちは。ユーザー定義関数による解です。 <使い方> 引数:日付範囲 日付データがあるセル範囲を指定 引数:始期 集計条件の開始日 引数:終期 集計条件の終了日 引数:集計地オフセット 集計条件の開始日 A1:A100に日付、B列に集計の対象となる金額があるとすれば、 =SUMDATEIF(A1:A100,"2004/11/1","2004/11/30",1) で2004年11月の合計を求めることができます。また、始期や終期にはセルの値を使うこともできます。 引数:集計値オフセットには、引数:日付範囲で指定した列から何行目の値を集計するのかを指定します。上記の例の場合ですと、A列から1列目=B列を集計しています。 注意点としては、日付範囲には複数列を指定することはできません。それと、処理スピードの問題でA:Aなどと指定せず、A2:A367など限定した範囲を指定とした方が良いでしょう。なぜなら、A:Aとするといちいち1~65536行を調べるようなつくりになっていますので、非常に重たいです。 ========== 次行からコード ================================== Function SUMDATEIF(日付範囲 As Range, 始期 As Date, 終期 As Date, 集計値オフセット As Byte)   Dim rngCell As Range, Result As Double   Application.Volatile   'エラートラップ   If 日付範囲.Columns.Count > 1 Then     SUMDATEIF = "ERR:日付範囲に複数行が指定されています"     Exit Function   End If   '集計   For Each rngCell In 日付範囲     With rngCell       If IsDate(.Value) Then         Select Case .Value           Case 始期 To 終期             Result = Result + .Offset(0, 集計値オフセット)           Case Else         End Select       End If     End With   Next rngCell   SUMDATEIF = Result End Function

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

まず表の形式ですが、下記のようになっていると思います。   A列     B列 1 日付     売上 2 2004/11/4   1234 3 2004/10/29  5678 4 2004/11/15   484 5 2004/10/18  2334 6 2004/11/6   1450 7 2004/12/1    34 8 2004/11/23  3333 これで、11月の売上の合計を出すには、 その結果が欲しいセルに、次の式を入れてみてください。 =SUMPRODUCT((MONTH(A2:A8)=10)*B2:B8) 式を見てもらえば分かると思いますが、日付がA2:A8で、 売上がB2:B8にあるとしています。ここは実際に入力されているセルに合わせて、替えてください。 =10の部分が10月を表しているので、11月なら、=11、12月なら=12とすればOKです。もちろん、 =$C$1などと月の数字が入っているセルを指定しても構いません(ただし、式をコピーする際は絶対番地にしてください)。 この式であれば、A列、B列どちらのデータを書き換えても、合計が変更されます。

denim777
質問者

補足

お答えありがとうございます。貴殿のお答えだと 確かに合計はされるのですが、年数が区別されずに 合計されてしまいます。2004年1月と2003年1月の 区別がされません。何か良い方法はございませんで しょうか。何度もお手数をお掛けしてすいません。

全文を見る
すると、全ての回答が全文表示されます。
  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.3

#2です。 書式が「日付」であれば、「2004/12/21」となっていても「平成16年12月21日」となっていても計算はできます。もし「文字列」となっていたら、計算できませんが、フィルタを使われているということですので、それはなさそうですね。 確認ですが、Sheet2のB2に数式を入力した後、「Shift+Ctrl+Enterキー」で確定されましたでしょうか。通常のEnterキーのみでは正しい結果にはなりません。配列数式の場合、数式の両端に{ }が付きますので確認してみて下さい。もし付いていなければ、セルをダブルクリック、もしくは数式バーにカーソルを置いて入力状態にした後、再度「Shift+Ctrl+Enterキー」で確定してみて下さい。 もし、既に配列数式になっていたとしたら、どのような結果となるのか ・○○○となるはずが別の計算結果(△△△)となる または ・#○○○のエラーが表示される などを補足していただけますでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.2

そのグラフの元になっている月ごとの売上表は、毎日のデータがあるシート、もしくは別のシートに作成されていて、これまでは、そこにコピー貼り付けか何かで値を貼り付けられていた、ということでしょうか。 以下、その前提で、 毎日のデータはSheet1のB2:B366、月ごとのデータはSheet2のB2:B13に記入するものとして、Sheet2のB2に =SUM(IF(MONTH(Sheet1!$A$2:$A$366)=ROW()-1,Sheet1!$B$2:$B$366,0)) として「Shift+Ctrl+Enterキー」で確定すると、1月の合計が出ます。 以下コピーとすれば、1~12月までの各月の合計が出ると思います。 上記の式には、そのセルの行番号を表示させる ROW() を使っていますので、セルがA2ではなくほかのセルだったら ROW()-* の * の部分で答えが1になるように調整して下さい。 なお上記の数式は配列数式になります。 配列数式については下記ページなどを参考にして下さい。 http://pc21.nikkeibp.co.jp/special/hr/hr1.shtml

参考URL:
http://pc21.nikkeibp.co.jp/special/hr/hr1.shtml
denim777
質問者

補足

御世話になります。早々のご回答 有難うございます。 貴殿のIF文章をそのまま使用しましたが 出来ませんでした。日付の形態が 2004/12/21となっていますがそれが 影響をしているのでしょうか?

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

ツールバーのツール→オプションを開いて下さい。 ここに計算方法というタブがあるのでそこをクリックしてみると、一番上に"計算方法"があると思います。 グラフが自動で変更されないのであればここが手動になっていませんか?"自動"を選択しておくと表の値の変更に連動してグラフも変更されます。

denim777
質問者

補足

お答えありがとうございます。 私の言葉が足らずすいません。 まずSheet1にある いま私の行っていることは バラバラである日付(2004/1/1形式)を フィルターによりある期間を抜き出します。 例えば11月分だけ抜き出せましたので SUMを使い合計の値を出します。 その値をコピーしてSheet2に ペーストします。それをグラフの データーとして活用します。 人の手が仲介してますので自動計算では対応 できません。手動の部分は (1)フィルターにて期間を抜き出す。 (2)期間内のB列にある売上の値の合計を算出。 (3)それを指定の場所にコピーペーストする。 その3点を自動で行いたいのです。

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

関連するQ&A

  • ExCEL2000合計

    A列になにかしらのデータ(ランダムです。ちなみに日付です) が何行がおきにならんでいます (何行おきかはランダムです) そのデータ(日付)ごとにC列に数値があります。 数値もランダムです。数値の個数もランダムです。 A列にデータの入っている行にだけその日付ごとの数値の合計値をだしたいのです。 関数とかつかってできますでしょうか?

  • エクセル:日付単位での合計

    お世話になります。 A、B列に日付が入っています。 (A列に月、B列に日)C列に数値が入っています。 1日1行とは限らない。 同じ日付の最終行のD列にC列にある数値の合計を出す。(1日ごとの数値の合計) 途中に空白セルはない。 しかし後で行の挿入をする可能性があります。 例) A2~A50までは4→4月という意味 A51~は    5→5月という意味 B2~B5までは 1→1日という意味 B6~B8までは 2→2日という意味 B9~B12までは3→3日という意味 ・・・と続き B48~B50までは30→30日 この場合 4月1日の合計をD5に、4月2日の合計をD8、4月3日の合計をD12に入れる。(D2~D4は空白にする) A51からは5月になるのでD50には4月30日の合計を入れる。 4月1日の次に5月1日のデータが入力される可能性もあるので、日が変わる場合だけでなく月が変われば合計を出すことに対応したい。 また例えば行番号6に4月1日のデータがあとから挿入される場合にもきちんと合計が出るようにしたい。 よろしくお願いします。

  • エクセル 毎日の複数のデータを合計して1行にする

    日付と数値が対になったデータが数ヶ月分あり、1日分が1~4行になります(日付=A列、数値=B列)。 数値の累計を折れ線グラフにしたいのですが、1日が複数行になっている所はプロットが垂直に並んでかっこ悪くなってしまいます。 1日分のデータを合計して、1日1行にするにはどうすればいいでしょうか。

  • EXCELでの条件付き合計

    EXCELで以下のような表を作成しました。 ・日付の行数はランダムです。 (無い日付もあれば複数行ある日付もあります) ・日付の列,金額の列にはそれぞれ”日付”,”金額”と名前をつけています。 ある日付からある日付までの金額の合計を計算したいと考えています。 SUMIF関数を使用すればできそうだということはわかるのですが, 日付の条件をどのように入力すればいいのかがよくわかりません。 どのように入力すればいいのでしょうか? 日付     金額 12月1日    123     12月15日    962    12月31日     56

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

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

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

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

  • エクセル 3行ずつの合計

    エクセルの質問です。 A列にID、B列に数値が入力されているとします。そしてC列にB列の2行ずつの合計を計算したいのですが、どうしたらいいでしょうか。 A | B  | C 1 | 25 | ID1から3の合計 2 | 24 | ID4から6の合計 3 | 37 | ID7から9の合計 4 | 32 | ID10から12の合計 ・ ・ ・ 数百行はあるのでいちいちちょこちょこと合計するのが苦痛なんです。よろしくお願いします。

  • エクセル 列の数値の合計の表示について、

    エクセル 列の数値の合計の表示について、 ごく基本的なことだと思いますが、教えてください。 例えばA列に上から順に数値を入れていき、その合計をB列に表示させるとします。 私のやり方はB列の計算式を=B1+A2としてこのコピーを、数値の数だけ下に下げることで目的を達しました。 すでにA列に数値が何個も入力している場合はこれで良いのですが・・。 ここから質問なのですが、例えばA列に現在10個数値がありB列に順番にその合計が出ているとします。 次にA列11行目に新規に数値を入力した時に、自動的にその合計がB列に出るようにしたいのです。 予めB列の数式のコピーを11行目以降に延ばしておくと、10行目の合計の数値が延ばした行まで並ぶので困っています。 よろしくお願いします。

  • エクセル:週合計、月合計を出したいのですが・・・

    月曜日~金曜日の 週、月合計を出したいのですがうまくできません>< どなたかご教授いただけないでしょうか。  A、B、C、D列には日付、残高、店の名前、売上が記入してあります。 以下のようなデータ表を作成したいですのですが・・・ http://www.fastpic.jp/images/961/8116491177.png 例 A          B      C     D 日付      残高    店の名前 売上 2012/01/01          A店   100 2012/01/02          B店   200 ~~ 2012/12/30 2012/12/31           C店   300 事前に、勉強したところ、月合計は  =SUMPRODUCT((MONTH($A$2:$A$1000)=E2)*$D$2:$D$1000) でいいのかな?と思ったのですがうまくできなかったです。 画像が奇麗にあげれないかもしれないのでfastpicに載せておきます。 画像のような表を作成したいのですが。。。 http://www.fastpic.jp/images/961/8116491177.png どなたか、お力をお貸しいただけたら、うれしく思います。

  • 合計が0の行を削除

    計算式が入力されており、合計が0(A,B列に数値が入力 されていない)の行を削除するVBAを教えてください。   A  B  C    1  10  5 15 2       0 3  20  6 26 C列に計算式が入力されています。 50行目まで入力されています。 オートフィルタを使用し、抽出された行を削除する方法が あると思いますが、VBAで作成する方法を探しています。 よろしくお願いします。

コピーしたときにスジが入る
このQ&Aのポイント
  • コピーした際に線が入るという問題について相談したいです。
  • 使用している製品はMFC-J6997CDWで、コピーをする際に線が入る問題が発生しています。
  • ご相談内容は、製品名がMFC-J6997CDWで、コピーをする際に線が入るというトラブルです。
回答を見る

専門家に質問してみよう