(Excel)合計から引いていく計算の方法

 Excelで、ある数字から別の数字を次々と差し引いていき、残りの数字をその都度表示していくという一種の累計(累積値)計算の例です。

やりたいことの確認

 先に結果を含めて表示します。
 C2セルには予算額が入力されており、C5セル以降には毎月の支出額が入力されていきます。そこでD5セル以降に毎月の残額を表示させていくものとします。
 実際のところC2セルの値は何かの合計値というわけではないのですが、利用可能な総数や上限という意味合いで「合計」と表現しています。

引き算記号だけを使う方法

 最も簡単な方法です。
 まずD5セルに「=C2-C5」と入力します。予算額から最初の(4月の)支出額を差し引く数式です。

 


 確定すると最初の残額「1380」が表示されました。

 


 続いてD6セルに「=D5-C6」と入力します。4月の残額から5月の支出額を差し引くという数式です。

 


 確定すると2番目の残額「1290」が表示されました。同様にして1つ1つ数式を入力していく方法も考えられますが…

 


 そうではなく、D6セルの数式を最後のD13セルまでフィルコピーします。具体的にはD6セルの右下の小さい緑の四角をD13セルまでドラッグするかダブルクリックすればOKです。
 これで一気に各月の残額が求められます。

 


 ここでD10セルを選択してみると、数式バー内の数式は「D9-C10」となっていることがわかります。
 このように各セルの数式が「1つ上の値から左隣の値を差し引く」という内容に書き換えられるので、連鎖的に各月の残額が算出されるというわけです。

 


 ところで、支出額が入っていない月の残額を表示したくない場合はそれぞれの数式を次のようにします。

 D5セル
 D6セル(D13セルまでフィルコピー)

=IF(C5="","",C2-C5)
=IF(C6="","",D5-C6)

 IF関数を使い、C列の値が空白なら空白を出力するようにしています。

SUM関数を使う方法

 まずD5セルに次のように入力して、最初の残額を表示させます。

 D5セル

=C$2-SUM(C$5:C5)

 絶対参照($)を使っているのがポイントです。
 ここだけ見るとC2-C5という引き算をやたら難しく表現しただけのように見えますが…



 そのままD5セルの数式を最後のD13セルまでフィルコピーします。具体的にはD5セルの右下の小さい緑の四角をD13セルまでドラッグするかダブルクリックすればすべての残額が表示されます。

 


 ここでD10セルの数式を確認すると「=C$2-SUM(C$5:C10)」となっています。
 「C$2」と「C$5」の部分はコピーにより変化していないことがわかります。これが絶対参照($)の効果で、これによりそれぞれの行で「C2セルの値から『C5セルからその行までの値の合計』を差し引いた値」が求められるというわけです。

 


 また、支出額がない行に残額を表示しない場合は次のようにします。

 D3セル(下方にフィルコピー)

=IF(C5="","",C$2-SUM(C$5:C5))

SCAN/LAMBDA関数を使う方法

 数式は難しくなりますが、1つの数式ですべてのセルに結果を表示させられる方法です。

 D3セル

=SCAN(C2,C5:C13,LAMBDA(a,b,a-b))

 C2セルをa、C5:C13の範囲をbと名付け、bの1つ1つの値を順次差し引いていくという式です。
 SCAN関数を使うことで、このように複数の値に対する計算の過程を1つ1つ表示させることができます。



 支出額がない行に残額を表示しない場合は次のようにします。

 D3セル

=SCAN(C2,C5:C13,LAMBDA(a,b,IF(b="","",a-b)))