スプレッドシートの『ARRAYFORMULA』関数を使って表示速度を高速化させよう!

EXCELなんか無くなって、みんなGoogleスプレッドシートに移行すればいいのに」と、いつも本気で思っている、たぬ(@tanuhack)です!

はじめに問います。

「何百、何千、何万行に渡って、セルに関数を入力していませんか?」

実はこれ、ものすごくブラウザに負担をかけていて、スプレッドシートの『表示速度』や『関数の反映スピード』の遅延化に繋がっているんですよ。

なんとスプレッドシートには、この問題を回避する『ARRAYFORMULA』というすばらしい関数が用意されています。

[voice icon="https://tanuhack.com/wp-content/uploads/2016/07/pf.jpg" name="たぬ" type="l"]Googleって本当にすごいなあ。[/voice]

そこで今回は、スプレッドシートの神関数の1つ、『ARRAYFORMULA』について紹介していきます。

注意
この関数は、『Googleスプレッドシート』のオリジナル関数で『Excel』には用意されていません。

ARRAYFORMULA関数とは

spreadsheets-importrange2

『ARRAYFORMULA』とは、『array:配列』と『formula:数式』の造語で、その名の通り数式を配列形式で表示することが出来ます

「数式を配列形式で表示することが出来ます」と声高らかに言われてもよく分からないと思うので、ちょっと補足しますね。

配列数式って?

配列数式とは、配列(複数セル)を対象に、1つの数式を作成する式です。

spreadsheets-importrange3

つまり、関数を何百、何万と入力する必要がなく、1つの数式だけで広範囲に渡ってカバーすることができます!

Excelにも配列数式は存在しますが、関数としては存在しません。詳細は割愛しますが、ちょっとややこしい感じで配列数式を使うことができます。

さらには、「配列数式は便利だけど、Excelで使うと遅くなった」と報告している人も多数見受けられました。

Googleスプレッドシートは、関数を数行に渡って入力するより、ARRAYFORMULAを使ったほうが断然速いので、積極的に使っていきましょう。

ARRAYFORMULA関数の使い方

今回は例として、TEXT関数を使って日付から曜日を求めてみます。

ARRAYFORMULAを使わない場合

=TEXT(単一セル,"ddd")

(※TEXT関数の使い方は省略します。)

この場合、全てのセルに単一セルの番地を入力していかなければなりません。

spreadsheets-importrange4

こちらで直接確認できます。

ARRAYFORMULAを使う場合

=ARRAYFORMULA(TEXT(範囲セル,"ddd"))

何が変わったのでしょうか。並べて見ます。

  • =TEXT(単一セル,"ddd")
  • =ARRAYFORMULA(TEXT(範囲セル,"ddd"))

おやおや、TEXT関数の単一セルが範囲セルになっているぞ〜。

ARRAYFORMULA関数を使うと、IFやTEXT、YEARなどの単一セルにしか使えないものに対して、範囲セルを使うことが出来るようになります!

spreadsheets-importrange5

こちらで直接確認できます。

MEMO
補足:範囲セルとは、『A2』や『B1』などの単一セルではなく、『A2:B4』や『X:Z』などの複数範囲のセルのことを指しています。

応用編(自動入力される喜びを知ろう)

データの末尾に数値を追加で入れて、自動で更新されてたら嬉しくないですか?

spreadsheets-importrange6

これを実現するためには『=ArrayFormula(TEXT(B3:B12,"ddd"))』の赤文字の部分を変更しなければいけません。

答え合わせ

『INDIRECT』関数と『COUNTA』関数を使うと、解決します。

=ARRAYFORMULA(TEXT(B3:INDIRECT("B" & COUNTA(B2:B)+1),"ddd"))

簡単に説明すると、『COUNTA(B2:B)+1』で最終行の番号の18を得て、それをINDIRECT関数で動的にB18として使っています。

spreadsheets-importrange7

こちらで直接確認できます。

このハックを使うと入力する手間もなくなるし、入力ミスもなくなるしで良いことだらけですね。積極的に使っていきましょう♪

便利な小技

ARRAYFORMULA関数には、なんと入力補完用のショートカットキーが用意されています。

セルに『=』を入力して、以下のショートカットキーを試してみてください!

  • Mac:Command+Shift+Enter
  • Windows:Ctrl+Shift+Enter
  • 『=ARRAYFORMULA』と手入力するのは大変ですもんね。

    [voice icon="https://tanuhack.com/wp-content/uploads/2016/07/pf.jpg" name="たぬ" type="l"]英語力に疎くて、FORMULAの『L』の部分を『R』にして『FORMURA』にしがちなんですよ…。FORMURAと言えばスーパーコンピューター(京)向けに開発されたプログラミング言語じゃないか。[/voice]

    このショートカットキーを積極的に使って、入力ミス無くしていきましょう。

    いまのところ関数の入力自体にショートカットキーが割り振られているのは、この『ARRAYFORMULA』だけみたいです。

    わざわざこの関数にだけ用意されているってことは、Google的にも積極的に使って欲しいんでしょうね。

    【保存版】実務の効率化が加速するスプレッドシートのショートカットキー18選!

    まとめ

    ARRAYFORMULAを使う理由

    • スプレッドシートの表示速度が速くなる
    • データを追加しても関数を追加入力しなくてよくなる
    • 勝手に自動入力されるからミスが減る
    • Google先生のお墨付き
    • なんか、かっこいい

    ARRAYFORMULAは、ちょっとクセがあるので使いこなすのに慣れが必要ですが、慣れたら爆速です。

    この関数は、あなたの発想次第でいろんなものに化けそうなポテンシャルを秘めています。

    「明日から」なんて言わず、今日から使って行きましょう!