ホーム Googleクラウド 【スプレッドシートの使い方】ARRAYFORMULA関数で数式を自動コピー【GSP010108】

【スプレッドシートの使い方】ARRAYFORMULA関数で数式を自動コピー【GSP010108】

47848
0

同じ列に同じ数式をコピーするときには

スプレッドシートやEXCELなどの表計算ソフトでは、「数式の入力→必要箇所にコピー」のようにして数値やデータの処理を行います。
Googleスプレッドシートにはこの「数式のコピー」を自動で行うことができる「ARRAYFORMULA関数」が実装されています(2019年1月現在、EXCELにはありません)

まずは基本から

図のような表を考えます。それぞれの商品の合計金額は「価格*数量」で求めることができます。ArrayFormula関数を使用しない場合、セルE3に「=C3*D3」と数式を入力して、その数式を下のセルにコピーして使用しますが、ArrayFormula関数を使用すると数式をひとつ作成するだけでその数式が下のセルに自動でコピーされます。
実際に数式を入力したほうがわかりやすいので、セルE3に以下の数式を入力してみましょう。

=arrayformula(C3:C*D3:D)

これはC3から始まるC列すべて と D3から始まるD列すべて を それぞれの行ごとにC3*D3、C4*D4、C5*D5、、、、、のようにArrayFormula関数で一気に下の行全てにコピーする という数式です。
*このようにセル範囲を指定して個々の値を求める数式を「配列数式」といいます。

この数式の場合、E3以下のすべてのセルに数式がコピーされます。
範囲を指定してArrayFormulaでコピーする場合は「C3:C8*D3*D8」のように範囲の行番号を指定します。

ArrayFormulaと関数を組み合わせる

ArrayFormula関数の引数「( )の中」には関数を利用することができます。
先ほどの表では数値が入力されていない行についても「0」が表示されていましたが、ここではIF関数と組み合わせて「0の場合は表示しない」という条件処理を組み合わせてみます。

=arrayformula(if(C3:C*D3:D=0,“”,C3:C*D3:D))

この数式は「C列とD列をかけ合わせた答えが0のときは何も表示しない、答えが0以外のときはC列とD列のかけ合わせた答えを表示」というものになります。

このように数式をArayFormula関数で複製入力する場合は、状況に応じて他の関数と組み合わせて処理を行うと便利です。

ArrayFormula関数によるメリット

ArrayFormula関数で数式をコピーすると、数式の入力自体は1度で済みます。数式を書き換えるときもひとつの数式を書き換えればコピーされた数式の計算結果も自動で変更されます。
また、処理速度についても複数のセルの複数の数式を処理するわけではないため、動作も軽快になります。
大きな表を扱うときによく起こる「数式のコピー忘れ」対策にも有効です。