スプレッドシートの大きな表から、必要な列だけを別の場所に取り出したいことってありますよね。列を手動でコピーすると、元データが更新されるたびに貼り直しが必要になって面倒です。
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に以下のデータが入っているとします。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 社員番号 | 氏名 | 部署 | 役職 | メール |
| 2 | 1001 | 田中太郎 | 営業 | 主任 | tanaka@example.com |
| 3 | 1002 | 鈴木花子 | 経理 | 課長 | suzuki@example.com |
| 4 | 1003 | 佐藤一郎 | 営業 | 部長 | sato@example.com |
| 5 | 1004 | 高橋美咲 | 人事 | 主任 | takahashi@example.com |
| 6 | 1005 | 伊藤健太 | 経理 | 係長 | 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)
| G | H | I | |
|---|---|---|---|
| 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)
| G | H | I | |
|---|---|---|---|
| 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関数と組み合わせれば、データの整理がグッと効率的になりますよ。
