• 締切済み

現在までの合計の表示方法

Excelで個人別、日別の実績一覧を作っています。 入力シートは以下のようなかんじで、B2~D2に実績を入力しE列はSUMが入っています。 次の日は同じくB2~D2に上書きしていきます。    A       B    C     D      E     F 1 名前     日付  りんご  バナナ   合計  今月の合計 2 ○○さん   5/8     1     5     6     30 3 △△さん   5/8     3     10    13    110 問題はF列の「今月の合計」なのですが、日々の合計(毎日入力したE列の数値)となるE列の合計を積み上げた値を表示させたいです。 日別実績を入力した後に別シートにA1からE3をコピペ→その別シートを元にSUMIFを使って個別に抽出したものを表示しています。 ただこの方法だと全てを入力後、別シートにコピペした後じゃないとF列の「今月の合計」は反映されません。 できれば、各項目の入力と同時に「今月の合計」が反映されるようにしたいのですが、良い方法はあえりませんか?

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

EXCEL2007より前のバージョンなら F2=SUMPRODUCT($E$2:$E2,($A$2:$A2=$A2)*($B$2:$B2>$B2-DAY($B2))*($B$2:$B2<=&$B2)) EXCEL2007以降のバージョンなら F2=SUMIFS($E$2:$E2,$A$2:$A2,$A2,$B$2:$B2,">"&$B2-DAY($B2),$B$2:$B2,"<="&$B2)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

エクセルの初心者さんからかなり多く寄せられるご相談の一種(つまりそういう事をしたいひとは沢山いらっしゃるという意味です)ですが、そもそも「昨日の数字」を「今日の数字」で書き潰してしまったら、もう昨日の数字はどこにも残っていませんから、累計を計算しようもありません。 それをどうにかするために別シートに「履歴」をコピー、昨日までの実績数字を確保しながら 累積=昨日までの合計+今日の数字 を初めて計算できているわけです。 総合的に、合理的にご相談の事を実現するには、 1.今日の実績をご相談のそのシートに記載(重ねて記録=「いつもこのセルに記入していたい」)するのは諦める 2.履歴のシートに毎日毎日今日の数字を書き足していく 3.ご相談のシートには、今できているSUMIFの数式で、今日までの累積を素直に表示するだけとする という段取りです。 #参考 「循環参照」の数式を上手に使い、「今日の数字」を記入した時点で累積を表示する方法も一応あります。 ただしこの方式では、「別のセル」に他の数字を記入した瞬間に今日の数字が二倍三倍と繰り返し加算されてしまうため、ご相談のシートでこの方法を利用する事はできません。 #参考 エクセルの一般機能ではご相談の事は「できない」と諦めた上で、マクロを使ってご相談のことを実現する事はできます。 手順: シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Change(byval Target as excel.range)  dim h as range  on error resume next  for each h in application.intersect(target, range("C:D"))   if isnumeric(h) then cells(h.row, "F") = cells(h.row, "F") + h  next end sub ファイルメニューから終了してエクセルに戻る C,D列に数字を記入すると、即座に累計する。 ただしこういった方法は、上手くいってる間はイイですが、たとえばうっかりC、D列に間違った数字を記入してしまった場合など、もうその瞬間から取り返しがつかなくなります。 そういう意味でも、最初にお話ししたようにキチンと「履歴」を記録していき、いつでも検証可能な状態で数字を「残しておく」のが最も上手なエクセルの使い方です。