こんにちは。ミネムラコーヒーです。
この記事はmasawadaアドベントカレンダーの10日目の記事でもあり、なおかつスプレッドシート&Excelアドベントカレンダーの10日目の記事でもあります。このように2つを重ねることで今年はどうにか生きています。
さて、本題です。
始めはmasawadaを例にとってスプレッドシートの関数を解説する記事を書こうと思ったのですが、スプレッドシートでサムネイル画像を作ったところ、これだけでもうぼくとしてはお腹いっぱいという感じになったのでこの画像の生成方法について書きます。
背景作成
サムネイルを作るにあたって、せっかくなのでこういう背景を作りたいなと思いました。わかりますでしょうか?左右に読んでも上下に読んでもmasawada
がずっと続く背景です。
step1:セルの行列を番号を足す
まずはじめに、常にどの隣り合うセルを見ても、右か下のセルに1足されるような関係性を作りたいですね。
=ROW(A1)+COLUMN(A1)-2
スプレッドシートではこのような場合にあまり難しいことを考える必要はありません。行番号を取得するROW関数と列番号を取得するCOLUMN関数を利用しましょう。数式を記入するセルの行列番号を足すようにすれば、右か下にいけば1が足される関係を作ることができます。
なお、2を引いておくのはお好みというわけではなく、あとで効いてきます。
8の剰余を取る
次にmasawada
の文字数である8の剰余に各セルの値を変換していきます。剰余はMOD関数で求めることができます。
=MOD(ROW(A1)+COLUMN(A1)-2,LEN(name))+1
いくつかポイントがあるので解説します。
LEN(name)について
LENは文字列の長さを求める関数ですが、ここではその引数にmasawada
ではなく、名前付き範囲で定義したnameを書いています。
settingsというシートを作り、そこにmasawada
の文字列を記入したセルをname
として定義しています。この背景の作成ではmasawada
の文字列を複数回参照するので、こうすることで関数の見通しを良くすることができます。
それだけならメリットが小さいのですが、名前付き範囲を利用することで、このようにmasawada
を別の名前に置き換えて横展開しやすくすることができます。果たして横展開することがあるのかはわかりませんが、経験上作っておくと横展開したくなる日がやってきます。
MODのあとの+1について
=MOD(ROW(A1)+COLUMN(A1)-2,LEN(name))+1
MOD関数に続けて+1をしています。 masawadaの文字数である8の剰余は0から7のいずれかになりますが、0はこのあとのstepで不都合がでます。なので+1することで1から8が埋まるようにしています。
数字を文字列に変換する
仕上げに1から8の数字をmasawada
に変換していきます。これについてはやり方はいろいろ考えられます。
=MID(name,MOD(ROW(A1)+COLUMN(A1)-2,LEN(name))+1,1)
今回はシンプルに、文字列の中間を抜き出すMID関数を利用しました。masawada
の1から8文字目から1文字を抜き出す、と指定するわけです。
ちなみにstep1の+2はここで効いてきます。
-2しておかないとA1セルから読んだときにsawada
になってしまい一瞬混乱します。
装飾を施す
GASの実行ボタン以外ではめったに使わない図形描画機能を使いましょう。ちなみにmasawadaの素材は以下で入手することができます。
あえてこの装飾でポイントをあげるとすれば、反転させたmasawada画像をスプレッドシート上で作りたい場合の操作でしょう。
セル上に画像を挿入の機能ではなく、図形描画の中で画像を配置します。スプレッドシートはパワポではないので、貼った画像を反転させたり順序を変更したりするような操作には強くありません。画像を挿入機能で入れた図形は左右反転や回転のような操作をすることができません。
その他のことはセンスです。ワードアート感を重視しました。
さて、Googleスプレッドシートは表計算だけでなくこのようなクリエイティブな活動にも利用することができます。ちなみに今回のシートは以下で閲覧可能です。
masawadaアドベントカレンダーの昨日はid:papixさんの「世界全国 masawadaの旅」でした。明日もid:papixさんです。スプレッドシート&Excelアドベントカレンダーは明日は空席なので登録お待ちしております。