エクセル入門
CHOOSECOLS関数(配列から複数の指定された列を返す)

Excelの初心者向け入門解説
最終更新日:2022-11-06

CHOOSECOLS関数(配列から複数の指定された列を返す)


CHOOSECOLS関数はOffice365のExcelに2022年になってから追加された新しい関数です。


配列から複数の指定された列を返します。
CHOOSECOLS関数は、引数で指定された列番号の順番通りに配列から列を選んで新規配列を作成して返します。
列ではなく行を選択抽出する場合はCHOOSEROWS関数を使用します。
・CHOOSEROWS関数の構文 ・CHOOSEROWSの基本動作 ・CHOOSEROWS関数の使用例と解説


CHOOSECOLS関数の構文

=CHOOSECOLS(配列, 列番号1, [列番号2],…)

配列 セル範囲まは配列を指定します。
必須です。
列番号1 配列選択する列番号。
配列2以降は省略可能です。
単一の数値または数値配列で指定します。
列番号2 列番号2以降は省略可能
指定方法は列番号1と同じ

配列の制限等

縦の1次元配列(縦1行)でも、縦横の2次元配列(複数行)でも、どちらでも指定できます。
ただし、行数が1,048,573を超えるとエラーとなるようです。
したがって、セル範囲も行全体「1:5」のような指定はできません。

引数の最大個数

引数の個数の最大は254個です。

したがって列番号は最大で253個までになります。

引数の指定方法

列番号では、単一の数値「1」や「2」だけではなく、数値の配列「{1,3,5}」等との併用が可能です。
ただし、指定できる数値の配列は1次元配列(縦{1;3;5}または横{1,3,5}等)だけです。
また、同一列番号を複数回別々に指定しても良く、それぞれ指定された位置で出力されます。

列番号の値範囲

単一の数値で指定した場合
数値の絶対値が 0 または配列内の列数を超えた場合は「#VALUE」エラーになります。
マイナス数値の場合は、下からの順番になります。
つまり、-1が配列の最後配列の列数のマイナス値が先頭になります。
数値配列で指定した場合
数値配列の最後の要素の場合は単一の数値で指定した場合と同様に、
数値の絶対値が 0 または配列内の列数を超えた場合は「#VALUE」エラーになります。
=CHOOSECOLS(1:2,{2,4,0}) ・・・ 「#VALUE」になります。

しかし数値配列の最後の要素以外の場合は、0または配列内の列数を超えた場合は単にその指定は無視されます。
=CHOOSECOLS(1:2,{2,0,4}) ・・・ {2,4}と同じ結果となります。
※執筆時点では、Microsoftの公式ページでこの記載は見当たりません。
したがって、この仕様がこのままずっと続くかどうかは定かではありません。


CHOOSECOLSの基本動作

Excel エクセル CHOOSECOLS関数 配行操作関数

数式
=CHOOSECOLS(A:A, 2, 4, 6)
解説
Excel エクセル CHOOSECOLS関数 配行操作関数

1:2行から、4列,6列,2列 を指定順に選択取り出し、新たな配列を作成して返しています。
列番号は引数の左から順に選択し、左から順に配置していきます。


CHOOSECOLS関数の使用例と解説

列番号を単一数値と数値配列の混在で指定する

=CHOOSECOLS(1:2,4,{2,6},8)
Excel エクセル CHOOSECOLS関数 配行操作関数


列番号1:4
列番号2:{2,6} ・・・ 縦配列の{2;6}でも良い
列番号3:8
このように混合での指定でも正しく選択出力されます。

列番号にマイナス数値を指定した場合

=CHOOSECOLS(A1:H2,1,8,-8,-1)
Excel エクセル CHOOSECOLS関数 配行操作関数

マイナス数値は右からの列位置になります。
この例では配列が8列なので、
8が一番右の最後であり、これは-1で指定しても同じになります。

先頭 最後
正数での指定 1 2 3 4 5 6 7 8
負数での指定 -8 -7 -6 -5 -4 -3 -2 -1

列番号を数値配列で指定し、その中に0が含まれている場合

=CHOOSECOLS(A1:H2,
IFERROR(SEARCH("a*b",A1:H1)*COLUMN(A1:H1),0))
Excel エクセル CHOOSECOLS関数 配行操作関数

IFERROR(SEARCH("a*b",A1:H1)*COLUMN(A1:H1),0)
この部分は、SEARCH関数を使って、
・SEARCH関数の書式 ・ワイルドカード ・SEARCH関数の使用例
A1:H1の中で"a"で始まり"b"で終わる場合に列番号を、違う場合は0を返します。

Excel エクセル CHOOSECOLS関数 配行操作関数

この配列をCHOOSECOLS関数の列番号に指定しています。
配列内の「0」の指定は無視され2,5,8列目が選択出力されています。
しかし以下のように"a*a"とした場合は、配列の最後が「0」となってしまう為、
CHOOSECOLS関数は、「#VALUE」エラーとなります。

Excel エクセル CHOOSECOLS関数 配行操作関数
※7行は「=IFERROR(SEARCH("a*a",A1:H1)*COLUMN(A1:H1),0)」の結果になります。


LAMBDA以降の新関数の問題集 ・・・ 解答は別ページになっています。

・目次 ・LAMBDA踊るぞ編 ・LAMBDA踊るぞ編2 ・SCAN編 ・MAP編 ・REDUCE編 ・山手線営業の旅編 ・BYROW,BYCOL編 ・ここからはフリー問題だよ編 ・好きな関数を使ってくれ編 ・いろんな関数を使ってね編 ・魔球編 ・豚が木に登れば落ちることもある編 ・たまには100点とってみたいものだ編 ・これは何と言う処理なんだろ編 ・数字は嫌いなのだ編 ・外堀から埋めていくぞ編 ・なぜわざわざそうしたいのか編 ・かっこつけてんじゃないよ編 ・頭の体操だけど新関数の出番はあるか?編 ・定番だけど出してなかったよね編
LAMBDA以降の新関数の使用例
・2つの1次元配列から、それをクロス結合した結果を返す ・A列が同じ行のB列の値を連結して、A列の一意な値とともに出力 ・名前定義を使わずにLAMBDA関数で再帰する方法 ・文字列を大文字小文字変換して大小文字の全組み合わせを出力 ・2つのテーブルの片方しかない行を縦に連結出力 ・3連単、3連複のフォーメーション買目を全て列挙する ・FILTER関数の出力行数・列数を指定する ・月が縦で日が横の表を、曜日(7列)で縦に折り返す ・文字列内の括弧()()の中の文字を取り出して列挙 ・表内にあるセル内改行を複数行に展開 ・文字列の中から1文字削除の全パターン出力 ・クロスABC分析 ・月利が毎月変動する月複利の計算 ・レーベンシュタイン距離 ・文字列を数字と数字以外で分割 ・縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS) ・直積(クロス結合、…




同じテーマ「エクセル入門」の記事

VSTACK関数(配列を縦方向に順に追加・結合)
HSTACK関数(配列を横方向に順に追加・結合)
CHOOSEROWS関数(配列から複数の指定された行を返す)
CHOOSECOLS関数(配列から複数の指定された列を返す)
TOCOL関数(配列を縦1列の配列にして返す)
TOROW関数(配列を横1行の配列にして返す)
DROP関数(配列の先頭/末尾から指定行/列数を除外)
TAKE関数(配列の先頭/末尾から指定行/列数を取得)
EXPAND関数(配列を指定された行と列に拡張する)
WRAPROWS関数(1次元配列を指定数の行で折り返す)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)


新着記事NEW ・・・新着記事一覧を見る

数字(1~50)を丸付き数字に変換するVBA|VBA技術解説(2022-11-15)
TEXTAFTER関数(テキストの指定文字列より後ろの部分を返す)|エクセル入門(2022-11-14)
TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)|エクセル入門(2022-11-14)
TEXTSPLIT関数(列と行の区切り記号で文字列を分割)|エクセル入門(2022-11-12)
LAMBDA以降の新関数はVBAで使えるか|VBA技術解説(2022-11-11)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)|エクセル入門(2022-11-08)
WRAPROWS関数(1次元配列を指定数の行で折り返す)|エクセル入門(2022-11-08)
EXPAND関数(配列を指定された行と列に拡張する)|エクセル入門(2022-11-07)
TAKE関数(配列の先頭/末尾から指定行/列数を取得)|エクセル入門(2022-11-06)
DROP関数(配列の先頭/末尾から指定行/列数を除外)|エクセル入門(2022-11-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.エクセルVBAでのシート指定方法|VBA技術解説
9.マクロって何?VBAって何?|VBA入門
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ