CHOOSEROWS 関数 / CHOOSECOLS 関数


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

CHOOSEROWS 関数 / CHOOSECOLS 関数

CHOOSEというのは"選ぶ"とか"選択する"などを意味する英単語です。CHOOSEROWS関数とCHOOSECOLS関数は、それぞれ指定した行や列を抽出する(取り出す)関数です。別のコンテンツで解説したTAKE関数やDROP関数と似ていますが、TAKE関数とDROP関数は「上から何行」とか「左から何列」みたいに"ブロックで抜き出す"イメージだったのに対して、CHOOSEROWS関数とCHOOSECOLS関数は「何行目と何行目」とか「何列目と何列目」みたいに"位置を指定して抜き出す"ような感じです。

引数は次のとおりです。

CHOOSEROWS(array,row_num1,row_num2,...)
CHOOSECOLS(array,col_num1,col_num2,...)

これも、解説をしやすいよう、私なりに日本語化してみます。

CHOOSEROWS(配列,行番号1,行番号2,...)
CHOOSECOLS(配列,列番号1,列番号2,...)

英語表記の引数名が「array」なので、そのまま「配列」としましたが、イメージとしては「セル範囲または配列」です。もし、過去に"配列"でひどいトラウマを受けてしまい、もう二度とその名前を口にするのさえ恐ろしい…というような方は、シート上の"セル範囲"または"表"、"リスト"、"テーブル"などを想像してください。引数「配列」は必須です。元になるセル範囲などを指定します。2つめ以降の引数で、最低ひとつの「行番号」または「列番号」を指定します。

存在しない行番号や列番号を指定するとエラーになります。

行番号や列番号には、マイナス(負)の数を指定できます。このへんは、TAKE関数やDROP関数と同じですね。

CHOOSEROWS関数とCHOOSECOLS関数は、引数に指定した位置の行や列を、指定した順番に取り出します。

また、上図のように複数の行番号や列番号をするとき、それら複数の行番号や列番号を"配列形式"で指定できます。

この仕組みを使って、もし「行単位に下から抜き出したい」のでしたら、CHOOSEROWS(Data,{7,6,5,4,3,2,1})みたいに記述するのは現実的ではありません。こんなときは、任意の連続した数値を配列形式で作成してくれるSEQUENCE関数と組み合わせれば簡単です。

使用例

では、いくつかの使用例をお見せします。すでに、別の関数の解説で、このCHOOSECOLS関数を使っていますので、それらをご紹介します。まずは、TEXTSPLIT関数との組み合わせです。TEXTSPLIT関数については、下記ページをご覧ください。

TEXTSPLIT関数

セルA1の文字列を"-"で分割しています。TEXTSPLIT関数は、分割したすべての結果を配列形式で返します。その配列のうち「3列目と1列目」だけを抜き出しています。CHOOSECOLS関数は、抜き出す順番(3列目が先で1列目が後など)も指定できるので便利ですね。

次は、VSTACK関数との組み合わせです。VSTACK関数については、下記のページをご覧ください。

VSTACK関数

VSTACK関数で2つのテーブルを縦にスタックしています。

スタックしたデータ全体(ここでは、セル範囲G2:H11)を、FILTER関数で絞り込みたいです。絞り込む条件は「[名前]列(ここではG列)が"田中"と等しかったら」です。なので、VSTACK関数でスタックした結果(ここでは、セル範囲G2:H11)から、[名前]列(ここでは、セル範囲G2:G11)だけを抽出します。

上図では「VSTACK(Data1,Data2)」が2回出てくるので、LET関数を使って、VSTACK関数の結果を変数Aに代入しています。LET関数については、下記のページをご覧ください。

LET関数

もちろんこれは、TAKE関数でも同じことができます。

TAKE関数

どちらがよい、という話ではなく、できるだけ多くの選択肢を持つことが最重要です。


まだまだ、便利に使えるケースはたくさん考えられますが、このへんにしておきます。
セルに入力する数式が"料理"だとすれば、その中で使う関数は"素材"や"調味料"です。さまざまな素材や調味料を駆使して、最高の料理を作ることこそが、数式作成の醍醐味と言えるでしょう。そういう意味で、今回追加された14個の関数たちは、どれも今までにない、画期的な素材や調味料に間違いありません。数式でプログラミングするのが大好きな者としては、もうね、ワクワクが止まらないですwこれから、じっくりと使い倒して、さらに美味しい数式を作りたいです。最後に、チラッと予告編的に書いておきますが、今回追加された関数の中で、TAKE関数とDROP関数だけは"参照型関数"です。これは、きっと何か画期的な使い方が潜んでいるに違いありません。