CHOOSECOLS関数は、検索/行列関数(配列操作関数)の一つです。配列(セル範囲)から列を指定どおりに取り出します。
2022年8月下旬のアップデートで新たに一般公開された14個の文字列・検索/行列関数のひとつです。(3月から「Office Insider Program」でテストされていたものです)
はじめに
CHOOSECOLS関数は、配列(セル範囲)から列を取り出しますが、行を取り出すCHOOSEROWS関数も同時に公開されています。
CHOOSECOLS関数の基本的な使い方について紹介していきます。
この関数を使用できるのは、サブスクリプション版の「Microsoft 365」アプリ「Excel for Microsoft 365」とWeb版だけですので注意してください。
関数の名前からすると「列」を「選び出す」という意味ですね。
どんなふうに使うのか詳しく教えてください。よろしくお願いしますm(__)m
【この記事でわかることは】
・CHOOSECOLS関数の使い方がわかります
CHOOSECOLS 関数の構文
CHOOSECOLS 関数入力時に表示される「数式オートコンプリート」から確認します。
※ 対応していないExcelバージョンでは「オートコンプリート」にこの関数は表示されません。
※ リンクはこの関数の公式ヘルプの掲載場所です。
CHOOSECOLS 関数の構文と引数
表示される引数の表示画像がこちらです。
=CHOOSECOLS(array, col_num1, [col_num2], …)
引数の英文表記を訳さなくても何となく意味はわかりますが、整理すると次のような感じです。
引数 | 説明 |
---|---|
配列 array | 配列(セル範囲)を指定【必須】 |
列番号1 col_num1 | 取り出す最初の列番号を指定【必須】 |
[列番号2] [col_num2] | 追加で取り出す列番号を順番に指定 [省略可能] ※ 配列内の列数が指定できる最大数 |
※ 列番号は「0」及び配列内の列数を超えて指定することはできません。
CHOOSECOLS 関数の使用例
それでは実際に使ってみて確認することが大事ですので早速やってみましょう。
引数の列番号を数式内に直接記述
次のように列番号を数式内に直接記述することで指定順に列を取り出すことができます。
引数の列番号を配列(セル範囲)で指定
次は、列番号を配列(セル範囲)で指定した例です。
・列番号は、セル H1~J1 に記入された値をセル範囲 H1:J1 で指定しています。
・手動で配列を指定する場合は {1,2,1} のように中括弧で括って記述します。
・この方法なら数式変えず、セル値の変更だけで表示列を切り替えることができます。
・列番号で、1を2回指定しています。同じ番号を複数回指定することが可能ということです。
・列番号を指定するセルの位置は画像のように「上」でなくてもどこでも(縦でも)OKです。
列見出しを検索して列番号を設定する方法
列番号を指定する場合、列数が多い巨大な表などの場合には番号がいくつなのか数えるのが大変です。そんな場合は、関数を使って列見出しを検索する方法が使えます。
画像では新しい XMATCH関数 を使っていますが、MATCH関数でも同じです。
※ XMATCH関数の使い方は、XMATCH関数の解説記事をご覧ください。
・列に見出しがある場合は、見出しの文字列を検索して列番号を取得すればOKです。
・ただし、取り出した列見出しを変更したい場合にはこの例は使えません。
・その場合は参照先の「検索範囲」を別のセル番地に設定して取得するようにしましょう。
セルの参照範囲を可変にする方法
先ほどの例では、XMATCH関数の引数「検索値」をセル範囲(H2:M2)で指定しています。その範囲内に空欄のセルがあると #N/A エラーになってしまうので範囲を正しく変更する必要があります。
OFFSET関数+COUNTA関数でセル範囲を可変にする
手動で変更しなくてもよい方法があるので紹介しておきます。次の画像をご覧ください。
赤下線の部分「OFFSET(H2,0,0,1,COUNTA(H2:M2))」だけ抜き出して実行してみます。
セルに文字列が入力されている部分だけの範囲が抽出できています。
使用した関数についての説明は次のとおりです。
【OFFSET関数】
基準セル(範囲)から指定する行数と列数だけシフトした位置にある高さと幅のセル範囲の参照を返します。
【OFFSET関数の構文】
=OFFSET(基準, 行数, 列数, [高さ], [幅]) ※ [ ] の引数は省略可能
基準=基準となるセル(範囲) :基準セルは「H2」
行数=基準セル(範囲の左上隅)からシフトさせる行数 :シフトさせないので「0」
列数=基準セル(範囲の左上隅)からシフトさせる列数 :シフトさせないので「0」
[高さ]=参照する行数(正数指定) :高さは1行なので「1」
[幅]=参照する列数(正数指定) :幅は「COUNTA関数」で可変させるので後述
【COUNTA関数】
セル範囲に含まれる空白ではないセルの個数を返します。
【COUNTA関数の構文】
=COUNTA(値1, [値2], …) ※ [ ] の引数は省略可能
値1=対象のセル(範囲) :セル範囲「H2:M2」
[値2]=追加する対象のセル(範囲) :追加しないので省略
【OFFSET(H2,0,0,1,COUNTA(H2:M2))で可変する動作】
・OFFSET関数の 5番目の引数「幅」に COUNTA関数を使うことで可変するようになります。
・COUNTA関数で参照セル範囲「H2:M2」内の入力セル数の値が引数「幅」になっています。
・入力セル数の増減で引数「幅」の値も変化するのでエラーにならず動作してくれます。
まとめ(おわりに)
以上、CHOOSECOLS 関数 について解説しました。
CHOOSECOLS関数を使えば、元データから必要な列だけ抽出したり、好きなように位置を並べ変えたりできることがわかりました。引数の指定方法もシンプルで難しくないと思います。今回使った「XMATCH関数」以外でも組み合わせて使える関数など、いろいろテストしてみてください。
取り出した列がスピルされてセルに表示されるのがよくわかりました。
横に大きな表から使う列のデータだけ取り出せるのはありがたいですね。
CHOOSEROWS関数は行を取り出すんだと想像がつきますね(^^;)
★★★ ブログランキング参加中! クリックしてね(^^)/ ★★★
【今後の記事について】
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてる」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m
過去記事のサンプルファイルをダウンロードできます
この記事で使用したサンプルの登録はありません。
過去の記事で使用したサンプルファイルをダウンロードできるようにページを設置していますので、こちら(このリンク先)からご利用ください
・1番目の列と6番目の列を指定した結果はスピル表示されました。
・=CHOOSECOLS(A2:F7,-1,-6) のように列を負数で指定すると、後ろからカウントした位置の列を取り出すこともできます。