エクセルで九九計算表を作る場合、縦軸と横軸に1から9を用意し、中に式を入力し、それを横方向にコピー、さらに下方向にコピーといった方法で作るのが一般的かと思います。
参考サイト
http://www.acroquest.co.jp/webworkshop/excel/excel_1_01.html
そして今回、グーグルスプレッドシートでこれをよりスマートに実現する方法を紹介しようと思います。
縦横に1から9を用意するところまではエクセルと同じですが、セルB2に、
=ARRAYFORMULA(A2:A10*ARRAYFORMULA(B1:J1))
とするだけで一気に九九が完了します。
このように、ARRAYFORMULA関数は入れ子状態にすることで通常のプログラミングでいうところのForのネストと似たようなことをしでかしてくれるわけです。
で、当然これだけでは不満なわけで、10,11,12・・・と増えたときに自動的に反応してくれないかな?ってなりますよね。
そこで次に可変長のARRAYFORMULAを見てみましょう。
これも一撃です。セルB2に
=ARRAYFORMULA(INDIRECT("A2:A"&COUNTA(A:A)+1)*ARRAYFORMULA(INDIRECT("B1:"&CHAR(COUNTA(1:1)+65)&1)))
とするだけです。見やすく改行すると、
=ARRAYFORMULA(
INDIRECT("A2:A"&COUNTA(A:A)+1)*
ARRAYFORMULA(
INDIRECT("B1:"&CHAR(COUNTA(1:1)+65)&1)
)
)
このような感じになるでしょうか。すなわち、COUNTA関数を混ぜることで行列数の変動に対応させています(だから空白セルとかは勘弁)。同時に、INDIRECT関数で包むことでA2:A10,A2:A11,・・・といった文字列を動的に生成しています。横軸はアルファベットに変換するためにCHAR関数も使っています。なお、CHAR関数だとZまでしか対応できず、AA以降はまた別の方法が必要になりますがここでは割愛します。