Google スプレッドシートのarrayfomula()と「{}」

昨日は「{}」がすごい。と書きましたが、「arrayformula()」という関数もすごいんです。

arrayformula関数は、()の中に配列を使った数式を書くと、その範囲内のセル全部に計算式を展開してくれます。
「計算式を展開」って表現であってるのかな。。。要は計算をしてくれるんです。

ありがちな日程表です

B1セルには
=arrayformula({"曜日";if(A2:A="","",text(A2:A,"ddd"))})
と入っています。

「うへ。面倒くさそう。。。。もっと簡単なやり方がありますよ。」

…するどいご指摘ありがとうございます。…お返事は保留して続けますね…

お気づきですよね。この数式の中にあれ…「{;}」がありますね。。。
「;」の前は「”曜日”」という文字列を指定しています。つまり表題です。
「;」の後ろがA列の日付を曜日文字に変換する関数(text())というわけです。

その前に「if(A2:A="","",…)」とあるのは、「日付が空欄ならお休みしてね」というおまじないです。この表がきっちり1ヶ月とか(縦方向の)長さが決まっているなら
  text(A2:A29,"ddd")
だけで足りますが、期限無限定で使っていくとなると、日付はどこまでも増えていきますから、日付があれば曜日を計算して、無ければよけいな計算をしないようにしているのです。

要するに、「=arrayformula({})」で表題文字列「曜日」と計算結果としての「月、火、水、木、金、土、日…」をいっぺんに指定できるのです。

マインスゥイーパーを知っていますか

ここで、さっきのご指摘へのお返事ですが、たしかに、個別セルに曜日を計算して表示する方法はいろいろあります。ですが、表をあれこれいじくっているうちに、計算式を壊してしまったり消してしまって
「あれ?おかしいな。ずれてる…/消えてる」
みたいなことはよくあることです。

ですが、arrayformula()を使うことで、B列の曜日に関してはB1セル(つまり表題)だけをメンテナンスすれば、あとは何十列、何千行あろうともスプシくんにおまかせできるのです。この管理コストの節減効果は大きくないですか?

実務では横に何十列にもなる表を使うこともあります。セル数は縦*横でどんどん増えていきます。そこに全部?数式が埋まっている…それも壊れているかいないかわからない…。それを探すマインスゥイーパーをやらなきゃいけない・・・考えただけでゾッとしません?

エクセル・スプシを使えばDXか

自分がいる組織もそうなんですが、パソコンを買って、ネットに繋いで、社員にワード、エクセルをあてがえば業務能率アップできるって、美しくも哀しい誤解ですよね。。。

じゃあ、業務用アプリを導入すればいいじゃないかという人は、お金持ちな大会社、お金の心配しなくていい「特殊な」法人の方々ですよね。うらまやしい。。。

だから、お金のない中小企業、公共団体こそ、人を育て、自分たちの業務にぴったりなアプリやノウハウを開発し、継承していく仕組みを作らないといけない。

でも、なかなかそこに目がいかないんですよね。。。

この記事が気に入ったらサポートをしてみませんか?