見出し画像

ARRAYFORMULA 関数を使って、フォームの回答を集計しやすく!

Google スプレッドシートに用意されている ARRAYFORMULA 関数を知っていますか? この記事では、タイトルにあるように ARRAYFORMULA 関数を使って、フォームの回答を集計しやすく処理する方法を説明します。

ARRAYFORMULA 関数とは?

Google が提供しているヘルプ記事では、

配列数式から返された値を複数行または複数列に表示したり、非配列関数で配列を使用したりすることができます。

ARRAYFORMULA - Google ドキュメント エディタ ヘルプ

と説明されていますが、この説明ではどんな結果がもたらされるのか、伝わりにくい気がします。わたし自身、この関数の使い方を実例を交えて教えてもらうまで、理解できていませんでした。

ARRAYFOMULA の使用例

Google フォームで以下のような質問を作成していませんか?

Google フォームでの質問例

このような質問をした場合、回答を書き出した Google スプレッドシートは、

Googleスプレッドシート での回答結果

といった感じになります。この結果を単純にグラフ化することはできますが、全体の満足度を数値化しようとした場合には、「とても満足した」や「満足した」といった文字列が邪魔になってきます。

ここで登場するのが、ARRAYFORMULA 関数です。適当な列の 2行目に、下図のように ARRAYFORMULA 関数で数式を設定します。

=ARRAYFORMULA(left(D2:D,1))
ARRAYFORMULA 関数の使用例 (1)

この例では、セル I2 に上述の数式を 1つ設定するだけで、それ以降のセルにすべて数式が設定されます。
ARRAYFORMULA 関数を使わない場合には、

=left(D2,1)

という感じで、セル I2 に設定した数式を、それ以降の必要なセルに対してオートフィルでコピーしてやらなければなりませんが、ARRAYFORMULA 関数を使うことで、以降のセルにも自動的に設定されます。

ARRAYFORMULA 関数の対象となる範囲を「D2:D」として指定していますが、これは「セル D2 以降の列 D すべて」を意味しています。
「D2:D100」といった表記はこれまでも Microsoft Excel で使われていましたが、Google スプレッドシートでは終端の数字を省略することで以降すべてを指定できるようになっています。

数値として計算できるように、セル I2 に設定する数式を

=ArrayFormula(if(D2:D<>"",value(left(D2:D,1)),""))

に変更して、セル I1 に

=AVERAGE(I2:I)

と設定すると、全体の満足度を数値として算出できます。

ARRAYFORMULA 関数の使用例 (2)

ARRAYFORMULA 関数を利用しなかった場合には、Google フォームからの回答が追加されるたびに、関数をオートフィル機能(もしくはコピペ)で設定しなければなりませんでしたが、ARRAYFORMULA 関数を使えばそんな手間も不要です。

Microsoft Excel では?

ARRAYFORMULA 関数は、Google スプレッドシート独自の関数なので、Microsoft Excel では利用できません。しかし、Microsoft Excel には同様の「スピル」という機能が備えられています。

雰囲気としては、

  • ARRAYFORMULA 関数の引数部分だけを指定し、関数ではない。

  • 「D2:D」のような範囲の終端を省略する表記は使えない。

という感じで、終端を省略できないものの、似た動作は行えるようです。

まとめ

今回は、Google フォームの回答を集計する例として紹介しましたが、以前の記事でも取り上げた

ARRAYFORMULA 関数と同様に、Googleスプレッドシートの独自関数である QUERY 関数で得られた結果に対して、数式を適用したい場合にも ARRAYFORMULA 関数が利用できます。

Microsoft Excel にはない、Google スプレッドシート独自の関数を利用して、Google スプレッドシートをもっと便利にしてみましょう!😍

いいなと思ったら応援しよう!