「Googleスプレッドシートから見た!」Excel 14の新関数 -1 EXPAND
旬なネタというには少し遅いかもしれませんが、Excel では テキスト操作・配列操作の 14の新関数が 2022年8月から 一般ユーザーも利用できるようになりました。
365ユーザーだけでなく 無料版の Excelオンライン でも使えるようになったので、Googleスプレッドシート使いの mirも検証してみようかなと。
別れた彼女(EXCEL)とこっそり再開ではなく、あくまでも Googleスプレッドシート視点での検証ですw
Excel新関数を理解したうえで、Googleスプレッドシート上で これらの関数の処理を
どう代替が出来るのか?
という考察が中心になります。
だから Excelユーザー向けではありません。
べ、別に Excelに新関数いっぱい追加されて 羨ましいとか、そんなんじゃないんだからね!(というツンデレ要素もあるかもw)
前回の記事 ※今回とは別のネタ Googleスプレッドシートの最新機能 タイムラインビューについての記事です
Excel 14の新関数 概要
今回の 14の新関数は、大きく テキスト操作系、配列操作系の2つに分けることが出来ます。TEXTから始まる3つがテキスト操作系、残りの11の関数が 配列操作系です。
テキスト操作系は単体で使っても便利な関数なんですが、配列操作系は単体で使うというよりは 他の関数と組み合わせで使うイメージですね。
オフィスTANAKAさんはメインディッシュというよりは調味料的と表現してましたが、確かにその通りだなと思います。
なんだよ調味料かー。と侮るなかれ、
昔は胡椒を求めて争いがおこったくらい調味料は重要なエッセンスで、これらの 新関数 を スピル、LAMBDA・ヘルパー関数と組み合わせる(調理する)ことで、今までExcelでは作業列、作業シートを使わないと出来なかった処理が、式内で完結できるようになったわけです。
こりゃ関数の宝石箱やで~。
これって EXCEL的には 大きな進歩なんですよね!(1行数式内での処理は Googleスプレッドシートに後れをとっていたので)
スピル機能、LAMBDA関数ときたけど
Excel職人から Googleスプレッドシート使いに ジョブチェンジしてから、めっきり Excelに触れる 機会 が減りまして、たまにExcelで作業すると「あれ、これExcelで 出来なかったんだ」ってなる時があります。
買い切り版はともかく Web版なら スピル系関数も使えるし、GoogleスプレッドシートとExcelお互いに関数を輸入しあってるんで、操作感や出来ることは近づいてきたつもりでいても、やっぱり2人は違う立場、違う境遇。
「もしかしたらExcel… お前とオレが… 逆だったかもしれねェ…」
ってセリフが脳内再生されますねw
意外と不便だった文字列操作系
新関数に TEXTSPLIT があったことで、そういや SPLIT はExcelになかったのねって気づきましたw
Excel側にも TEXTJOINは結構前からあったんで忘れてましたが、 SPLIT(分割)処理 は出来なかったんですね。
区切り文字で分割する TEXTSPLITに加え、 TEXTBEFORE や TEXTAFTER といった区切り文字の前後を取り出せる関数も追加されました。
正規表現 系の関数は無いものの、これらの活用で Excelで の「セル内の文字列から 一部分を取得する処理」が、だいぶ柔軟かつ簡単に 出来るようになったんじゃないでしょうか。
ようやく SUBSTITUTEと REPTで 指定した文字を 空白100個に置き換えて、バッファみてMIDして最後にTRIMで空白除去なんていう、古の職人技に頼らなくても済みますねw (初めてこの方法知った時は、先人の知恵に感動したもんですが)
Excelの 中カッコによる配列結合 は 範囲、数式には使えなかった
Googleスプレッドシートを使う上では、これないともう生きていけない!ってくらい重宝している 中カッコ{ } による 範囲・配列の縦横結合ですが、Excelだと微妙に挙動が違っています。
数値や文字列には使えます。だから スピル対応バージョンのExcelなら、
として 配列を返すことが可能です。
これを式内で引数としても活用できます。
でも、
これらはGoogleスプレドシートでは普通に使える記述なんですが、Excelでは使えずエラーとなってしまいます。
これ出来ないって、かなり不便だわー。
このような 今までの Excelの 文字列操作、配列操作 の不満(物足りなさ)を解決すべく登場した、いや 馳せ参じた 14の新関数は、まさに
「Excel殿の 14人」
と言えるでしょうw
新関数を使うことで、今まで 複雑な数式で 天文学的な時間を要していた 処理が「トンットーン拍子やろ?」って感じで 簡単に出来るようになったわけです。
「おつかれ、今までのオレ。」
と涙を流しちゃうかもww
Googleスプレッドシートでは 前から出来ていた。でも・・・
追加された 新関数は、文字列操作にしろ配列処理にしろ Googleスプレッドシートでは 以前から普通に使えてた機能、もしくは存在していた関数の組み合わせで対応できるものが ほとんどです。
だからLAMBDAみたいに Googleスプレッドシートに輸入されたからといって、大きな変化が起こるわけではありません。
でも、さすがに後から実装してきただけあって、いい感じの引数や機能があるんですよねー。でも、あえて互換性をなくしに来てるような気も・・・。
Excel新関数で出来る 処理の中には、Googleスプレッドシートでは苦労するものもあるんで、やっぱりちょっと羨ましいかもw
というわけで、Excelの14の新関数を
関数の特徴
Excelでの メリット、デメリット、活用
Googleスプレッドシートの機能、関数との違い
Googleスプレッドシートでは無い機能を どう補うか
このような Googleスプレッドシート視点で検証していきましょう!
Excel視点の 新関数解説は、おなじみ Office TANAKAさんがわかりやすいです。
EXCEL 14の新関数 1. EXPAND関数
さて、一発目どれにしようかなと考えましたが、今回は初回ってことで 前振りが長くなっちゃったんで、軽めの EXPAND関数を取り上げようかなと。
EXPAND関数の特徴
14の関数は、結構ニコイチというか ペアになってるんですが、このEXPANDだけは 孤高というか 対になる関数がないんですよね。
無理にペアを組ませるとしたら、Googleスプレッドシートにしかない関数ですが ARRAY_CONSTRAIN でしょうか。
ARRAY_CONSTRAIN が配列を縮小する関数なのに対して、EXPANDはその名の通り 配列を拡張する関数です。
第1引数の範囲・配列は、セル範囲はもちろん 数式で生成した配列でもOK
たとえばこんな感じも使えます。
Excelでの メリット、デメリット、活用
このEXPAND関数のメリットですが、当然 配列を拡張できることです。
具体的にどんな需要があるのか はわかりませんが、たとえば 縦横のサイズが違う 幾つかの配列があって、それらを全部同じサイズに揃えたい!って時には使えますね。
LAMBDA + MAP 関数と合わせて使えるケースがあるかも?
EXPANDのデメリットは 逆、つまり配列の縮小ができないことでしょうか。
対象の 配列の行数、または列数以下を指定すると エラーになります。
これ別に対応できたんじゃね?
って思いますけどね。
配列の一部を切り出したり、切り捨てる 新関数 TAKE・DROPと被るから 忖度したってことでしょうか??
Googleスプレッドシートの機能、関数との違い
残念ながら Googleスプレッドシートには、この EXPANDに該当する関数がありません。
とはいえ、TANAKA氏が、「はっきり言って、これを便利に使うシーンが思い浮かびません。」というくらい、使いどころが微妙な関数。
応用ネタとしては、中身が同じ配列を簡単に生成できるってのがあるけど、これも使いどころがあるのか不明。
まぁ中身が同じ文字列の配列生成は LAMBDA + MAKEARRAY でも出来るし、SEQUENCEをIFと合わせる方法もあるんで別に・・・って感じですが。
さすがに記述は EXPANDが一番短くてシンプルですが、無くても困らないような気も・・・。
Googleスプレッドシートでは無い機能を どう補うか
この EXCELにしかない EXPAND関数を、どうやって Googleスプレッドシートで実現させるか。
当然、既存関数の組み合わせとなります。GASを使う必要はありません。
でもこれ、実は LAMBDAヘルパー関数の検証記事 2回目、MAKEARRAYの回で既に検証済みなんです。
=LAMBDA(arr,makerow,makecol,padd,
MAKEARRAY(makerow,makecol,
LAMBDA(r,c,
IFERROR(
INDEX(arr,r,c),padd)
)
)
)
(A1:C3,I8,I9,I10)
ネタの使いまわし感がありますがw 一応、改めて見直してみましょう。
EXPAND の Googleスプレッドシート 代替数式
式としては単純で、MAKEARRAY で 指定したサイズの配列を生成して、 r(行番号) c(列番号) を使って 対象となる範囲 arr の各セルから INDEX(arr, r, c) で値を返す。
もし対象の配列より大きい r、c (行番号、列番号)だった場合は、INDEXはエラーを返すので、IFERROR( INDEX( arr, r, c ), pad ) として、INDEXの外を参照したら pad(埋める文字)を返すとしています。
EXPANDと同じ引数の形にする為に 最後に全体をLAMBDA(ラム)って、
arr, r, c, pad を外に出しています。
完全にEXPAND と同じではなく、こちらは 配列の縮小にも対応できるんで、ぶっちゃけ上位互換ですw
そのまま EXPANDって名前付き関数にしちゃっても良いですね。
というわけで、式を作るのは面倒ですが Googleスプレッドシートは EXPANDがなくても代替できることが確認できました。
でも、他の EXCEL新関数 からは
「くくく・・、やつは Excel 14の新関数の中でも最弱」
って声が聞こえてきそうな
俺たちの Excel 14の新関数 との闘いは これからだ!
mir先生の次回作をご期待ください(完)
敵の幹部を一人倒して打ち切り・・・とはなりません。続きます。
別に新関数と戦ってるわけでもありませんw
こんな感じで次回も EXCELの新関数 を Googleスプレッドシート視点で、
関数の特徴
Excelでの メリット、デメリット、活用
Googleスプレッドシートの機能、関数との違い
Googleスプレッドシートでは無い機能を どう補うか
という 4つの切り口 で検証していきます。
さすがに毎週1つずつで 14週も引っ張ったら 打ち切りになりそうですがw
一回で2つくらいのペースで 書いていこうかなと。
■このシリーズの次の記事
この記事が気に入ったらサポートをしてみませんか?