EXPAND 関数


ここで解説する EXPAND関数 は、ProPlusに追加された関数です。Excel 2016/2019/2021では使用できませんのでご注意ください。また、本稿執筆時点(2022/3/20)では、まだInSider Programに実装されただけですので、製品版で使えるようになるには、まだ少し時間がかかると思います。なお、この関数については、YouTubeの動画でも解説しています。ぜひ、ご覧ください。また、この関数では「スピル」という機能が使われています。スピルに関しては「Excel 2016レビュー[Excelの使い方が激変する「スピル」]」をご覧ください。

今回追加された関数たち

2022年3月に、14個の関数が追加されました。

【文字列操作系】

  • TEXTBEFORE
  • TEXTAFTER
  • TEXTSPLIT

【セル範囲・配列操作系】

  • VSTACK
  • HSTACK
  • TOROW
  • TOCOL
  • WRAPROWS
  • WRAPCOLS
  • TAKE
  • DROP
  • CHOOSEROWS
  • CHOOSECOLS
  • EXPAND

こうして見ると、【セル範囲・配列操作系】に何だかたくさんの関数が追加されて、もうね訳が分からんですわ~って感じてるかもしれませんけど、実はこれら11個の関数って、2つずつセットになっています。

[セル範囲などを、垂直方向(縦)や水平方向(横)に結合する]

  • VSTACK
  • HSTACK

[複数行×複数列のセル範囲などを、1行または1列に変換する]

  • TOROW
  • TOCOL

[1行のデータたちを、複数行×複数列に変換する]

  • WRAPROWS
  • WRAPCOLS

[セル範囲などから、一部を取り出したり、一部を削除する]

  • TAKE
  • DROP

[セル範囲などから、指定した行や列だけを取り出す]

  • CHOOSEROWS
  • CHOOSECOLS

こうした"仲良し2つセット"の中で、かわいそうに、一人で給食を食べているボッチがいます。それが今回解説するEXPAND関数です。EXPANDとは、"広げる"とか"拡張する"などの英単語です。その名のとおり、セル範囲などの大きさを拡張します。

既存のOFFSET関数と似ていますけど、根本的に違います。

引数は、次のとおりです。

EXPAND(array,rows,columns,pad_with)
EXPAND(配列,行数,列数,代替文字)

英語表記の引数名が「array」なので、そのまま「配列」としましたが、イメージとしては「セル範囲または配列」です。もし、むかし"配列"から酷いイジメを受けたなどで、もう顔も見たくない!お前なんか大っ嫌いだ!二度と敷居をまたぐんじゃねぇ!塩まいとけ!というような方は、シート上の"セル範囲"または"表"、"リスト"、"テーブル"などを想像してください。引数「配列」には、元のセル範囲などを指定します。もちろん必須です。次の引数「行数」と引数「列数」は、それぞれ拡張後の行数と引数を指定します。どちらか一方は必ず指定します。どちらか一方を省略すると、元のセル範囲などの行数や列数になります。なお、引数「行数」と引数「列数」には、元のセル範囲の行数や列数より、小さい数は指定できません。つまり、EXPAND関数は、元のセル範囲などを"拡張"することはできますが、逆に"縮小"させることはできないということです。

EXPAND関数は、元のセル範囲などを拡張して、新しく行や列を追加するわけですが、その新しく追加された行や列には、もちろん何の値も入っていません。なので、そのままでは「#N/A」エラーになります。

この「#N/A」エラーを表示しないで、代わりの値を代入したいときは、引数「代替文字」に指定します。

まぁ、一般的には、空欄("")などを指定する場合が多いでしょう。

ここに、数値や文字列などの"値"ではなく、"数式"を指定できたらおもしろいな~って思いましたが、それは無理ぽいです。まぁ、EXPAND関数が返すモノが"配列"なのですから、しかたないです。

期待が大きい

EXPAND関数の解説は以上です。はっきり言って、これを便利に使うシーンが思い浮かびません。いや、正確に言えば「ワークシート上で便利に使うシーン」がです。「こう使ったら便利かな」とか「あんなとき重宝するな」などと思い浮かぶシーンは、すべてVBAです。もし、このEXPAND関数を「WorksheetFunction.Expand()」などのように使えたら、これはもう、感涙でディスプレイが曇ります。たとえば、複数のテーブルをVSTACK関数で垂直結合し、そのリストをCHOOSEROWS関数で1行ずつ取り出し、それらを使って何らかの演算を行い、その結果はEXPAND関数で拡張した列にぶち込み、そうして作った二次元配列を一発でシート上に展開すると。そんなことが、わずか数行で可能になりそうです。しかも、ワークシート関数を呼び出していますから、速度的にもかなり期待ができます。コードは思い浮かびますが、まだ実装されていませんので、実行して試せないのが残念です。

"仲良し2つセット"たちの傍らで、一人寂しく給食を食べていたEXPAND関数は、決してボッチなどではありません。ねぇ、EXPAND関数くん、キミ教室間違えてるよ。隣のVBA教室に行ってみな。向こうには、キミの親友たちが、たくさん待ってるよ。みたいな。