スプレッドシートの大きな表から、必要な行だけを別の場所に取り出したいことってありますよね。行を手動でコピーすると、元データが更新されるたびに貼り直しが必要になって面倒です。
CHOOSEROWS関数を使えば、必要な行だけを数式ひとつで抽出できます。行の順番を入れ替えたり、複数行をまとめて取り出したりすることも自在です。
この記事では、CHOOSEROWS関数の基本的な使い方から、INDEX関数との違い、実務での活用パターンまでわかりやすく解説します。
スプレッドシートのCHOOSEROWS関数とは?
CHOOSEROWS関数(読み方: チューズロウズ関数)は、指定した行だけを元の範囲から自由に取り出す関数です。「choose rows(行を選ぶ)」が名前の由来です。
たとえば、20行ある社員名簿から「田中さん」「佐藤さん」の行だけを抜き出すことができます。元データと数式でつながっているため、元データが更新されれば抽出結果も自動で反映されますよ。
CHOOSEROWS関数にできることをまとめると、次のとおりです。
- 元データから必要な行だけを抽出する
- 複数の行番号をカンマで並べて一括取得できる
- 行の並び順を自由に入れ替えて出力できる
- 負の値を使って末尾から行を指定できる
NOTE
CHOOSEROWS関数はGoogleスプレッドシート独自の関数ではなく、ExcelのMicrosoft 365やExcel 2024でも使用できます。ただし、Excel 2019以前のバージョンでは使えません。
CHOOSEROWS関数の基本構文
=CHOOSEROWS(配列, 行番号1, [行番号2, ...])
カッコの中に、元データの範囲と、取り出したい行の番号を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列 | 必須 | 元データのセル範囲または配列 |
| 行番号1 | 必須 | 取り出す行の番号(1始まり) |
| 行番号2以降 | 任意 | 追加で取り出す行の番号(カンマ区切りで複数指定可) |
行番号は、指定した範囲の中での相対的な番号です。範囲が3行目から始まっていても、先頭行が「1」になります。シート全体の行番号ではない点に注意してくださいね。
CHOOSEROWS関数の基本的な使い方
ここでは、社員名簿のデータからCHOOSEROWS関数で行を取り出す例を紹介します。
サンプルデータ
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行だけ取り出す
「田中太郎」の行だけを取り出します。出力先のセル(たとえばA8)に以下の数式を入力して、Enterを押します。
=CHOOSEROWS(A1:E6, 2)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 8 | 1001 | 田中太郎 | 営業 | 主任 | tanaka@example.com |
第2引数に「2」を指定したので、範囲内の2行目(見出しを1行目とすると田中さんのデータ行)が横方向にすべて出力されました。
複数行をまとめて取り出す
「田中太郎」「佐藤一郎」「伊藤健太」の3行をまとめて取り出します。
=CHOOSEROWS(A1:E6, 2, 4, 6)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 8 | 1001 | 田中太郎 | 営業 | 主任 | tanaka@example.com |
| 9 | 1003 | 佐藤一郎 | 営業 | 部長 | sato@example.com |
| 10 | 1005 | 伊藤健太 | 経理 | 係長 | ito@example.com |
行番号をカンマで区切って並べるだけで、必要な行だけを抜き出せます。「鈴木花子」「高橋美咲」の行は含まれていませんね。
CHOOSEROWS関数の実務活用パターン
特定のレコードだけ抽出する
元の管理表から特定のレコードだけを取り出すことができます。ヘッダー行も一緒に抽出すると見やすくなりますよ。
=CHOOSEROWS(A1:E6, 1, 3, 5)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 8 | 社員番号 | 氏名 | 部署 | 役職 | メール |
| 9 | 1002 | 鈴木花子 | 経理 | 課長 | suzuki@example.com |
| 10 | 1004 | 高橋美咲 | 人事 | 主任 | takahashi@example.com |
行番号「1」でヘッダー行も含めて抽出しています。報告書や共有資料を作るとき、元データを壊さずに必要な情報だけを別の場所に表示できますよ。
行順を入れ替えて出力する
行番号の指定順を変えるだけで、出力順を自由に変えられます。
=CHOOSEROWS(A1:E6, 4, 2, 6)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 8 | 1003 | 佐藤一郎 | 営業 | 部長 | sato@example.com |
| 9 | 1001 | 田中太郎 | 営業 | 主任 | tanaka@example.com |
| 10 | 1005 | 伊藤健太 | 経理 | 係長 | ito@example.com |
元データでは「田中→佐藤→伊藤」の順番ですが、「佐藤→田中→伊藤」に入れ替えて出力されました。特定のメンバーを先頭に配置したいときに便利ですよ。
負の値で末尾から取り出す
行番号に負の値を指定すると、末尾から数えて行を取り出せます。
=CHOOSEROWS(A1:E6, -1)
「-1」は最終行を意味するので、6行目の「伊藤健太」のデータが取り出されます。「-2」なら末尾から2番目の「高橋美咲」です。
行数が変動する可能性のあるデータでも、「最後の行を取得したい」という場面で確実に末尾行を取り出せます。
=CHOOSEROWS(A1:E6, 1, -2, -1)
このように正の値と負の値を混ぜて使うこともできます。先頭の「ヘッダー行」と末尾2行のデータを一度に取り出せますよ。
INDEX関数との違い・使い分け
スプレッドシートで特定の行を取り出す方法として、INDEX関数もあります。この2つの関数には明確な違いがあります。
| 比較項目 | CHOOSEROWS関数 | INDEX関数 |
|---|---|---|
| 複数行の同時取得 | できる(行番号を複数指定) | できない(1回の指定で1行のみ) |
| 行順の入れ替え | できる | できない |
| 負の値(末尾指定) | できる | できない |
| 列の指定 | できない(行の抽出専用) | できる(行と列を指定して1つの値を取得) |
| 対応バージョン | Microsoft 365 / Excel 2024以降 | すべてのバージョン |
使い分けの目安は次のとおりです。
- 複数行をまとめて抽出したい、行順を変えたい → CHOOSEROWS関数
- 特定の行と列が交差する1つの値を取り出したい → INDEX関数
INDEX関数は「行番号と列番号を指定して1つのセルの値を返す」のが本来の使い方です。一方、CHOOSEROWS関数は「行まるごと抽出」に特化しています。目的に合わせて選んでくださいね。
CHOOSEROWSとCHOOSECOLSの違い
CHOOSEROWS関数には、ペアとなるCHOOSECOLS関数があります。名前のとおり、行と列の違いだけです。
| 比較項目 | CHOOSEROWS関数 | CHOOSECOLS関数 |
|---|---|---|
| 抽出対象 | 行を取り出す | 列を取り出す |
| 構文 | =CHOOSEROWS(配列, 行番号1, ...) | =CHOOSECOLS(配列, 列番号1, ...) |
| 引数の構造 | 完全に同じ | 完全に同じ |
| 負の値 | 末尾の行を指定 | 末尾の列を指定 |
使い分けはシンプルです。
- 必要な行を選んで抽出したい → CHOOSEROWS関数
- 必要な列を選んで抽出したい → CHOOSECOLS関数
両方を組み合わせれば、行と列を同時に絞り込むこともできます。
=CHOOSEROWS(CHOOSECOLS(A1:E6, 2, 3), 1, 3, 5)
まずCHOOSECOLS関数で「氏名」「部署」の2列を抽出し、その結果からCHOOSEROWS関数で1行目・3行目・5行目を取り出しています。大きな表から必要なデータだけをピンポイントで抜き出せますよ。
よくあるエラーと対処法
CHOOSEROWS関数はシンプルですが、行番号の指定を間違えるとエラーになります。
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | 行番号に0を指定した | 行番号は1以上または-1以下を指定してください |
#VALUE! | 行番号が範囲の行数を超えている | 範囲の行数以内の番号を指定してください |
#REF! | 出力先のセルに既にデータがある | 出力先の範囲を空にしてください |
#NAME? | 関数名のスペルミス | 「CHOOSEROWS」のスペルを確認してください |
特に注意したいのが「行番号0」のケースです。CHOOSEROWS関数の行番号は1始まりなので、0を指定すると #VALUE! エラーになります。
TIP
行番号が範囲の行数を超えていないか確認するには、ROWS関数を使いましょう。
=ROWS(A1:E6)で範囲の行数(この例では6)がわかります。指定する行番号がこの数を超えないように注意してくださいね。
まとめ
CHOOSEROWS関数は、指定した行だけを元の範囲から自由に取り出すための関数です。複数行の一括抽出、行順の入れ替え、末尾からの指定まで、柔軟な行操作が1つの数式で完結します。
この記事のポイントをおさらいしておきましょう。
- CHOOSEROWS関数は
=CHOOSEROWS(範囲, 行番号)で、指定した行を取り出す - 行番号をカンマで複数並べれば、必要な行をまとめて取得できる
- 行番号の指定順で出力の並び順が決まるので、行順の入れ替えも簡単
- 負の値(-1、-2…)で末尾から行を指定できる
- INDEX関数は1セルの値を返す関数。行まるごと抽出ならCHOOSEROWS関数が最適
- CHOOSECOLS関数は列方向のペア関数。組み合わせれば行と列の同時絞り込みもできる
まずは =CHOOSEROWS(A1:E6, 2, 4) のように必要な行を取り出すところから試してみてください。FILTER関数やSORT関数と組み合わせれば、データの整理がグッと効率的になりますよ。
