Googleスプレッドシートで九九の表を作れと言われたら

www.watto.nagoya

ですよねー。

ただ今日は仕事がスプレッドシートに首っぴきだったので*1EXCELじゃなくGoogleのスプレッドシートで九九はどうやるかなー?ってやってみたのが以下。

小ネタですが。
スプレッドシートを開いて、コピペしながらだとわかりやすいかと。



【スポンサーリンク】



9x9

まず参照元の数。

1、2と打ってからドラッグしてもいいですが、めんどくさい。
セルに

=ROW()-1

でも打てる。
ROWは列の位置を返す関数。
A2に1、A3に2と入れたいのでマイナス1してる。

ただこれだと関数をそれぞれのセルに入れなきゃならず結局ドラッグしなきゃならない。
これはめんどくさい(ドラッグ嫌い)。

なのでA2セルに

=ARRAYFORMULA(ROW(A2:A10)-1)

と入れる。
ARRAYFORMULA関数は、スプレッドシートならでは。
ドラッグしなくても対象を範囲にすれば機能する。

f:id:paradisecircus69:20180628182126j:plain

これで縦に1〜9が入った。
で、今度は横。
今、入力したのをそのままコピればいい。
B1セルに

=TRANSPOSE(A2:A10)

と入れると縦横転倒してコピーされる。
こんな感じ↓。

f:id:paradisecircus69:20180628182310j:plain

で、参照元の数が揃った。
あとは掛け合わせるだけ。
最後はB2セルに

=ARRAYFORMULA(A2:A10*B1:J1)

数字同士を掛け合わせる関数を入れる。
この3つの関数で九九が完成。

f:id:paradisecircus69:20180628182359j:plain

SMART

=ARRAYFORMULA(ROW(A2:A10)-1)
=TRANSPOSE(A2:A10)
=ARRAYFORMULA(A2:A10*B1:J1)

んー。
ただここまで書いてみて思ったが、関数3つも入れてあまりスマートじゃないかもしれない。
せっかく楽するためのARRAYFORMULAなのに3つって。
そりゃあドラッグよりはスマートですが(ドラッグ嫌い:二度目)。

ただこうなると関数1つでやってみたくなるもの。
そもそも参照数字を入れなくてもROWとCOLUMNの位置で数字は指定できる。
なのでA1セルに

=ARRAYFORMULA(ROW(A1:A9)*COLUMN(A1:I1))

と入れてやるのはどうだろう?
行*列の位置から直接掛け、ARRAYFORMULAを使い各セルでそれを行う。
すると関数1つで99が出来上がり。

f:id:paradisecircus69:20180628182627j:plain

こんな感じですか。


もっとスマートなやり方がある気もしますが、ARRAYFORMULAは99どころか99x99でも999x999でも使えるので自由度が高い。
とりあえずCOLUMNをA1:KN1くらいまで広げてやってみたら

=ARRAYFORMULA(ROW(A1:A)*COLUMN(A1:KN1))

f:id:paradisecircus69:20180628182820j:plain

こういう感じになる。


数字が大きいとCOLUMN指定が面倒なのでR1C1を使いたいところですけどね。
それはそれで面倒だなぁ(考えるのが)。

GASやVBA使うまでもないですが、あえて二次元配列使ったりして、わざわざめんどくさいルートを考えるのもそれはそれで面白いですけどね(脳トレ的に)。
以上、ARRAYFORMULA便利ですわーというお話でした。

一応、GAS本の書影貼っときます。
(使ってないけど)

詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド~
高橋宣成
秀和システム
売り上げランキング: 4,825

*1:朝はExcel方眼紙用&VBAという地獄……見た目重視のExcel方眼紙は滅ぶべき