スプレッドシートのCHOOSECOLS関数の使い方|列を自由に抽出

スポンサーリンク

スプレッドシートの大きな表から、必要な列だけを別の場所に取り出したいことってありますよね。列を手動でコピーすると、元データが更新されるたびに貼り直しが必要になって面倒です。

CHOOSECOLS関数を使えば、必要な列だけを数式ひとつで抽出できます。列の順番を入れ替えたり、複数列をまとめて取り出したりすることも自在です。

この記事では、CHOOSECOLS関数の基本的な使い方から、INDEX関数との違い、実務での活用パターンまでわかりやすく解説します。

スプレッドシートのCHOOSECOLS関数とは?

CHOOSECOLS関数(読み方: チューズコラムズ関数)は、指定した列だけを元の範囲から自由に取り出す関数です。「choose columns(列を選ぶ)」が名前の由来です。

たとえば、10列ある売上表から「商品名」「金額」の2列だけを抜き出すことができます。元データと数式でつながっているため、元データが更新されれば抽出結果も自動で反映されますよ。

CHOOSECOLS関数にできることをまとめると、次のとおりです。

  • 元データから必要な列だけを抽出する
  • 複数の列番号をカンマで並べて一括取得できる
  • 列の並び順を自由に入れ替えて出力できる
  • 負の値を使って末尾から列を指定できる

NOTE

CHOOSECOLS関数はGoogleスプレッドシート独自の関数ではなく、ExcelのMicrosoft 365やExcel 2024でも使用できます。ただし、Excel 2019以前のバージョンでは使えません。

CHOOSECOLS関数の基本構文

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

カッコの中に、元データの範囲と、取り出したい列の番号を指定します。

引数必須/任意説明
配列必須元データのセル範囲または配列
列番号1必須取り出す列の番号(1始まり)
列番号2以降任意追加で取り出す列の番号(カンマ区切りで複数指定可)

列番号は、指定した範囲の中での相対的な番号です。範囲がB列から始まっていても、B列が「1」になります。シート全体の列番号ではない点に注意してくださいね。

CHOOSECOLS関数の基本的な使い方

ここでは、社員名簿のデータからCHOOSECOLS関数で列を取り出す例を紹介します。

サンプルデータ

A1:E6に以下のデータが入っているとします。

 ABCDE
1社員番号氏名部署役職メール
21001田中太郎営業主任tanaka@example.com
31002鈴木花子経理課長suzuki@example.com
41003佐藤一郎営業部長sato@example.com
51004高橋美咲人事主任takahashi@example.com
61005伊藤健太経理係長ito@example.com

1列だけ取り出す

「氏名」の列だけを取り出します。出力先のセル(たとえばG1)に以下の数式を入力して、Enterを押します。

=CHOOSECOLS(A1:E6, 2)
 G
1氏名
2田中太郎
3鈴木花子
4佐藤一郎
5高橋美咲
6伊藤健太

第2引数に「2」を指定したので、範囲内の2列目(B列)の氏名データだけが縦に出力されました。

複数列をまとめて取り出す

「氏名」「部署」「メール」の3列をまとめて取り出します。

=CHOOSECOLS(A1:E6, 2, 3, 5)
 GHI
1氏名部署メール
2田中太郎営業tanaka@example.com
3鈴木花子経理suzuki@example.com
4佐藤一郎営業sato@example.com
5高橋美咲人事takahashi@example.com
6伊藤健太経理ito@example.com

列番号をカンマで区切って並べるだけで、必要な列だけを抜き出せます。元データの「社員番号」や「役職」は含まれていませんね。

CHOOSECOLS関数の実務活用パターン

レポート用に必要な列だけ抽出する

元の管理表には大量の列がありますが、レポートに必要な列だけ取り出すことができます。

=CHOOSECOLS(A1:E6, 2, 3)

「氏名」と「部署」だけを抽出した簡易リストの完成です。報告書や共有資料を作るとき、元データを壊さずに必要な情報だけを別の場所に表示できますよ。

列順を入れ替えて出力する

列番号の指定順を変えるだけで、出力順を自由に変えられます。

=CHOOSECOLS(A1:E6, 3, 2, 1)
 GHI
1部署氏名社員番号
2営業田中太郎1001
3経理鈴木花子1002

元データでは「社員番号→氏名→部署」の順番ですが、「部署→氏名→社員番号」に入れ替えて出力されました。部署別にデータを確認したいときに便利ですよ。

負の値で末尾から取り出す

列番号に負の値を指定すると、末尾から数えて列を取り出せます。

=CHOOSECOLS(A1:E6, -1)

「-1」は最終列を意味するので、E列の「メール」が取り出されます。「-2」なら末尾から2番目のD列「役職」です。

列数が変動する可能性のあるデータでも、「最後の列を取得したい」という場面で確実に末尾列を取り出せます。

=CHOOSECOLS(A1:E6, 1, -2, -1)

このように正の値と負の値を混ぜて使うこともできます。先頭の「社員番号」と末尾2列の「役職」「メール」を一度に取り出せますよ。

INDEX関数との違い・使い分け

スプレッドシートで特定の列を取り出す方法として、INDEX関数もあります。この2つの関数には明確な違いがあります。

比較項目CHOOSECOLS関数INDEX関数
複数列の同時取得できる(列番号を複数指定)できない(1回の指定で1列のみ)
列順の入れ替えできるできない
負の値(末尾指定)できるできない
行の指定できない(列の抽出専用)できる(行と列を指定して1つの値を取得)
対応バージョンMicrosoft 365 / Excel 2024以降すべてのバージョン

使い分けの目安は次のとおりです。

  • 複数列をまとめて抽出したい、列順を変えたい → CHOOSECOLS関数
  • 特定の行と列が交差する1つの値を取り出したい → INDEX関数

INDEX関数は「行番号と列番号を指定して1つのセルの値を返す」のが本来の使い方です。一方、CHOOSECOLS関数は「列まるごと抽出」に特化しています。目的に合わせて選んでくださいね。

CHOOSEROWSとCHOOSECOLSの違い

CHOOSECOLS関数には、ペアとなるCHOOSEROWS関数があります。名前のとおり、行と列の違いだけです。

比較項目CHOOSECOLS関数CHOOSEROWS関数
抽出対象列を取り出す行を取り出す
構文=CHOOSECOLS(配列, 列番号1, ...)=CHOOSEROWS(配列, 行番号1, ...)
引数の構造完全に同じ完全に同じ
負の値末尾の列を指定末尾の行を指定

使い分けの目安は次のとおりです。

  • 必要な列を選んで抽出したい → CHOOSECOLS関数
  • 必要な行を選んで抽出したい → CHOOSEROWS関数

両方を組み合わせれば、行と列を同時に絞り込むこともできます。

=CHOOSEROWS(CHOOSECOLS(A1:E6, 2, 3), 1, 3, 5)

まずCHOOSECOLS関数で「氏名」「部署」の2列を抽出し、その結果からCHOOSEROWS関数で1行目・3行目・5行目を取り出しています。大きな表から必要なデータだけをピンポイントで抜き出せますよ。

よくあるエラーと対処法

CHOOSECOLS関数はシンプルですが、列番号の指定を間違えるとエラーになります。

エラー原因対処法
#VALUE!列番号に0を指定した列番号は1以上または-1以下を指定してください
#VALUE!列番号が範囲の列数を超えている範囲の列数以内の番号を指定してください
#REF!出力先のセルに既にデータがある出力先の範囲を空にしてください
#NAME?関数名のスペルミス「CHOOSECOLS」のスペルを確認してください

特に注意したいのが「列番号0」のケースです。CHOOSECOLS関数の列番号は1始まりなので、0を指定すると #VALUE! エラーになります。

TIP

列番号が範囲の列数を超えていないか確認するには、COLUMNS関数を使いましょう。=COLUMNS(A1:E6) で範囲の列数(この例では5)がわかります。指定する列番号がこの数を超えないように注意してくださいね。

まとめ

CHOOSECOLS関数は、指定した列だけを元の範囲から自由に取り出すための関数です。複数列の一括抽出、列順の入れ替え、末尾からの指定まで、柔軟な列操作が1つの数式で完結します。

この記事のポイントをおさらいしておきましょう。

  • CHOOSECOLS関数は =CHOOSECOLS(範囲, 列番号) で、指定した列を取り出す
  • 列番号をカンマで複数並べれば、必要な列をまとめて取得できる
  • 列番号の指定順で出力の並び順が決まるので、列順の入れ替えも簡単
  • 負の値(-1、-2…)で末尾から列を指定できる
  • INDEX関数は1セルの値を返す関数。列まるごと抽出ならCHOOSECOLS関数が最適
  • CHOOSEROWS関数は行方向のペア関数。組み合わせれば行と列の同時絞り込みもできる

まずは =CHOOSECOLS(A1:E6, 2, 3) のように必要な列を取り出すところから試してみてください。FILTER関数SORT関数と組み合わせれば、データの整理がグッと効率的になりますよ。

この記事で紹介した関数・関連記事

タイトルとURLをコピーしました