スプレッドシートで同じ関数を繰り返したい時に、セルの数だけ入力していては時間が無駄になってしまいます。そんな時に便利なARRAYFORMULA関数について解説します。
ARRAYFORMULA関数とは
ARRAYFORMULA関数は同じ関数や計算式を繰り返す時、全てのセルに入力する代わりに、範囲を指定して自動的に処理を繰り返してくれる関数です。使い方は簡単ですが、知っている知らないとでは作業効率が大きく変わるとても便利な関数です。
- 一つのセルに入力することで同じ処理を繰り返すことができる
- 処理が反映されるセルは空白にしておく必要がある
- 一部の関数では利用できない。
- ARRAYFORMULA関数はexcelにはない
- 不要な関数の繰り返しを減らせるので軽くなる
ARRAYFORMULA関数の使い方
ARRAYFORMULA関数の使い方はとても簡単です。基本構文の中に繰り返し行いたい処理を入れるだけです。
=ARRAYFORMULA(配列数式)
ARRAYFORMULA関数の使用例
連番を振る
スプレッドシートで連番を振る方法について解説した記事の中でも利用しているのですが、セルの行や列を表示してくれるrow関数とcol関数というものがあります。
=row()
この関数を使えばそのセルの行を表示してくれるため、連番を振る時に便利です。オートフィルを使ってコピーしてもいいですが、何千行にも渡るシートの場合はそれも面倒ですし、数千のセルに関数が入っていることになり、余計な負荷がかかってしまいます。そんな時にARRAYFORMULA関数を利用することで一つのセルに入力するだけで済みます。
例えばA1からA1000まで千行に渡るセルに連番を振りたい場合は、A1のセルに下記のように入力するだけで1000行目まで自動的にセル内に数値が入ります。
=ARRAYFORMULA(ROW(A1:A1000))
if関数をARRAYFORMULA関数で繰り返す
次は条件で判断するifを使った時にARRAYFORMULA関数を使用してみましょう。
名前と点数に対して合否判別を行うシンプルなシートです。点数の横のセルに80点以上なら合格、そうでなければ不合格と表示させるための関数を入力します。
ARRAYFORMULA関数を使わずに、if関数だけを使った場合、人数分の合否判定を行う関数を入力する必要があります。
=IF(80<=C3,"合格","不合格")
=IF(80<=D3,"合格","不合格")
=IF(80<=E3,"合格","不合格")
これが、ARRAYFORMULA関数を使用すればたった一つのセルに関数を入れるだけで同じ処理が行えます。(※ARRAYFORMULA関数によって入力されるセルは空白である必要があります。)
=arrayformula(IF(80<=C3:C10,"合格","不合格"))
ARRAYFORMULA関数で計算式を繰り返す
足し算を繰り返したい時にはSUM関数を使うことが多いですが、この時SUM関数を使うと選択範囲全体の合計値が表示されてしまいます。1列ずつ足さなければ求める結果にならない点には注意したいところです。ちなみにこの場合F4からF9のセル自体は空でF3のセルに入った計算式の結果が表示されています。
=ArrayFormula(($C3:C9+D3:D9+$E3:E9))
ARRAYFORMULA関数のショートカットキー
数式の編集中に下記のキーを押してやる事で、ARRAYFORMULA関数が補完入力されます。長くて綴りを間違えたりしがちなのでよく使う人はショートカットキーも覚えてしまいましょう。
command+shift+return(Mac)
control+shift+enter(Windows)
まとめ
同じ処理を繰り返す時に便利なARRAYFORMULA関数の解説を行ってきました。作業効率を高め、スプレッドシートの負荷を減らすためにも、適時活用していきたい関数ですね。
スプレッドシートの関数については基本的なものを紹介しています。
スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。