いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)1つの式だけで累計を求める

 Googleスプレッドシートで累計を求める場合、「=B3+C2」とか「=SUM(B$3:B3)」といった式を下方にコピーして連ねるのが常套手段です。
 しかし実は1つのセルへの入力だけで各行に累計を表示することができます。

  • SUMIF関数とARRAYFORMULA関数を組み合わせて累計を求めることができます。

手順

f:id:accs2014:20200113005536p:plain:right:w650

 集計対象となるデータがB3:B12に記録されています。
 そこでC3セルに次のように入力します。

=ARRAYFORMULA(SUMIF(ROW(B3:B10),"<="&ROW(B3:B10),B3:B10))

 SUMIF関数を使い、データの行番号(ROW関数)を条件として集計を行います。第2引数(条件式)にもROW関数を用い、ARRAYFORMULA関数を併用することで複数の条件を一度に与え、複数の結果を得ています。
 次の式を一度に実行していると考えればわかりやすいかと思います。

=SUMIF(ROW(B3:B10),"<="&ROW(B3),B3:B10)
=SUMIF(ROW(B3:B10),"<="&ROW(B4),B3:B10)
・・・
=SUMIF(ROW(B3:B10),"<="&ROW(B10),B3:B10)

f:id:accs2014:20200113005540p:plain:right:w400

 結果はこうなります。

 なお、SUM関数とOFFSET関数を用いる方法も考えられそうですがARRAYFORMULA関数と併用できないためうまくいきません。

 ちなみに、データの列と三角行列との行列積で累計を求めるという方法もあります。
 やや複雑ですので詳しくは省略しますが、三角行列の生成については次の記事をご覧ください。

www.officeisyours.com