CHOOSECOLS関数(配列から複数の指定された列を返す)
CHOOSECOLS関数はOffice365のExcelに2022年になってから追加された新しい関数です。
CHOOSECOLS関数は、引数で指定された列番号の順番通りに配列から列を選んで新規配列を作成して返します。
列ではなく行を選択抽出する場合はCHOOSEROWS関数を使用します。
CHOOSECOLS関数の構文
配列 | セル範囲まは配列を指定します。 必須です。 |
列番号1 | 配列選択する列番号。 配列2以降は省略可能です。 単一の数値または数値配列で指定します。 |
列番号2 | 列番号2以降は省略可能 指定方法は列番号1と同じ |
配列の制限等
ただし、行数が1,048,573を超えるとエラーとなるようです。
したがって、セル範囲も行全体「1:5」のような指定はできません。
引数の最大個数
したがって列番号は最大で253個までになります。
引数の指定方法
ただし、指定できる数値の配列は1次元配列(縦{1;3;5}または横{1,3,5}等)だけです。
また、同一列番号を複数回別々に指定しても良く、それぞれ指定された位置で出力されます。
列番号の値範囲
単一の数値で指定した場合
マイナス数値の場合は、下からの順番になります。
つまり、-1が配列の最後、配列の列数のマイナス値が先頭になります。
数値配列で指定した場合
数値の絶対値が 0 または配列内の列数を超えた場合は「#VALUE」エラーになります。
=CHOOSECOLS(1:2,{2,4,0}) ・・・ 「#VALUE」になります。
=CHOOSECOLS(1:2,{2,0,4}) ・・・ {2,4}と同じ結果となります。
※執筆時点では、Microsoftの公式ページでこの記載は見当たりません。
したがって、この仕様がこのままずっと続くかどうかは定かではありません。
CHOOSECOLSの基本動作

=CHOOSECOLS(A:A, 2, 4, 6)

列番号は引数の左から順に選択し、左から順に配置していきます。
CHOOSECOLS関数の使用例と解説
列番号を単一数値と数値配列の混在で指定する
=CHOOSECOLS(1:2,4,{2,6},8)

列番号2:{2,6} ・・・ 縦配列の{2;6}でも良い
列番号3:8
このように混合での指定でも正しく選択出力されます。
列番号にマイナス数値を指定した場合
=CHOOSECOLS(A1:H2,1,8,-8,-1)

この例では配列が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))

この部分は、SEARCH関数を使って、

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

※7行は「=IFERROR(SEARCH("a*a",A1:H1)*COLUMN(A1:H1),0)」の結果になります。
LAMBDA以降の新関数の問題集 ・・・ 解答は別ページになっています。
同じテーマ「エクセル入門」の記事
VSTACK関数(配列を縦方向に順に追加・結合)
HSTACK関数(配列を横方向に順に追加・結合)
CHOOSEROWS関数(配列から複数の指定された行を返す)
CHOOSECOLS関数(配列から複数の指定された列を返す)
TOCOL関数(配列を縦1列の配列にして返す)
TOROW関数(配列を横1行の配列にして返す)
DROP関数(配列の先頭/末尾から指定行/列数を除外)
TAKE関数(配列の先頭/末尾から指定行/列数を取得)
EXPAND関数(配列を指定された行と列に拡張する)
WRAPROWS関数(1次元配列を指定数の行で折り返す)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)
新着記事NEW ・・・新着記事一覧を見る
Gemini CLIの徹底解説:AIをターミナルから使いこなす|生成AI活用研究(2025-07-03)
Gemini CLIとPowerShellでVBAerのAI活用を加速する実践ガイド|生成AI活用研究(2025-07-02)
「Gemini CLI」によるExcel自動化フレームワーク:実践ガイド|生成AI活用研究(2025-07-01)
AI(Gemini)とエクセル数式対決 その3|生成AI活用研究(2025-06-24)
不合理の砦|AIが計算を終えた場所から、人間の価値が始まる|生成AI活用研究(2025-06-23)
生成AIはExcelの複雑な数式を書けるのか?|AIとの対話から学ぶ協業のリアル|生成AI活用研究(2025-06-22)
日時データから日付ごとの集計(UNIQUE,SUMIFS,GROUPBY)|エクセル雑感(2025-06-20)
AI時代の働き方革命:オンリーワン戦略 ― 属人化で搾取されない労働者に|生成AI活用研究(2025-06-20)
VBA開発の標準化を実現する共通プロンプトのすすめ|生成AI活用研究(2025-06-14)
生成AIと100本ノック 29本目:画像の挿入|生成AI活用研究(6月13日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.変数宣言のDimとデータ型|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.FILTER関数(範囲をフィルター処理)|エクセル入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.