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以降の新関数の問題集 ・・・ 解答は別ページになっています。
同じテーマ「エクセル入門」の記事
TOCOL関数(配列を縦1列の配列にして返す)
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。