「この表の2行目と5行目だけ取り出したいんだけど、いちいちコピペするしかないの?」「最終行のデータだけサッと抜き出す方法はないかな?」そんな悩み、ありますよね。
ExcelのCHOOSEROWS関数を使えば、配列やセル範囲から好きな行を自由に取り出せます。行番号を指定するだけで、複数行の抽出も順番の入れ替えも一発です。この記事では、基本構文から実務で使える応用パターンまで、わかりやすく解説していきますよ。
ExcelのCHOOSEROWS関数とは
CHOOSEROWS関数は、配列やセル範囲から指定した行を取り出す関数です。動的配列関数(数式の結果が複数セルに自動展開される関数群)の1つで、取り出した結果はスピル(自動展開)で表示されます。
たとえば10行のデータから3行目と7行目だけを抜き出す、といった操作がワンクリックでできます。
読み方・意味
読み方は「チューズロウズ」です。「choose」は「選ぶ」、「rows」は「行」という意味ですね。名前のとおり「行を選ぶ」関数です。
姉妹関数として、列を選ぶCHOOSECOLS関数があります。
対応バージョン
CHOOSEROWS関数が使えるのは以下の環境です。
- Microsoft 365
- Excel 2024
- Excel for the web
Excel 2021以前のバージョンでは使えません。お使いのExcelのバージョンを確認してみてくださいね。
CHOOSEROWS関数の基本構文と引数
=CHOOSEROWS(配列, 行番号1, [行番号2], ...)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 配列 | 必須 | 行を取り出したい配列またはセル範囲を指定します |
| 行番号1 | 必須 | 取り出したい行の番号を指定します。配列の先頭行が「1」です |
| 行番号2, … | 省略可 | 追加で取り出したい行番号を指定します。複数指定できます |
引数「配列」
行を取り出す対象の配列やセル範囲を指定します。テーブル名やセル範囲(A1:D10など)を渡せます。他の関数の結果を配列として渡すことも可能です。
引数「行番号」
配列の中から何行目を取り出すかを数値で指定します。先頭行が「1」、2行目が「2」です。
複数の行を取り出したい場合は、カンマで区切って指定します。たとえば 2, 5 と書けば2行目と5行目を取り出せます。
同じ行番号を複数回指定することもできます。1, 1, 3 と書けば、1行目が2回と3行目が返されます。
負の数で末尾から指定
行番号に負の数を使うと、末尾からカウントできます。
- -1: 最後の行
- -2: 最後から2番目の行
- -3: 最後から3番目の行
データの行数がわからなくても、末尾のデータを取り出せるのが便利なポイントです。
CHOOSEROWS関数の基本的な使い方
以下のサンプルデータを使って説明しますね。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 名前 | 部署 | 売上 | 評価 |
| 2 | 田中 | 営業 | 500 | A |
| 3 | 鈴木 | 企画 | 320 | B |
| 4 | 佐藤 | 営業 | 450 | A |
| 5 | 山田 | 総務 | 280 | C |
| 6 | 高橋 | 企画 | 410 | B |
特定の行を1行取り出す
2行目(田中さんのデータ)を取り出してみましょう。
=CHOOSEROWS(A1:D6, 2)
結果は 田中 | 営業 | 500 | A です。配列の2行目がそのまま返されます。
複数行をまとめて取り出す
2行目と4行目をまとめて取り出す場合はこうです。
=CHOOSEROWS(A1:D6, 2, 4)
結果は以下の2行が返されます。
| 田中 | 営業 | 500 | A |
|---|---|---|---|
| 佐藤 | 営業 | 450 | A |
営業部だけ抜き出したいときなどに使えますね。
行の順番を入れ替えて取り出す
指定した順番どおりに結果が返されるのもポイントです。4行目→2行目の順で指定してみましょう。
=CHOOSEROWS(A1:D6, 4, 2)
結果は佐藤さんが先、田中さんが後になります。
| 佐藤 | 営業 | 450 | A |
|---|---|---|---|
| 田中 | 営業 | 500 | A |
行番号の指定順がそのまま出力順になります。並べ替えにも応用できますよ。
CHOOSEROWS関数の実務活用パターン
最終行のデータを取り出す(負の数)
「表の最後のデータだけ見たい」という場面で便利です。
=CHOOSEROWS(A1:D6, -1)
結果は 高橋 | 企画 | 410 | B です。最後から2行分を取り出す場合は -1, -2 と指定します。
=CHOOSEROWS(A1:D6, -1, -2)
データが追加されても常に末尾から取り出せます。行数を数える必要がないのが便利ですね。
SEQUENCEと組み合わせて逆順に並べ替える
SEQUENCE関数を使うと、行番号を動的に生成できます。これを利用してデータを逆順に並べ替えてみましょう。
=CHOOSEROWS(A1:D6, SEQUENCE(6,,6,-1))
SEQUENCE(6,,6,-1) は {6,5,4,3,2,1} を生成します。つまり6行目から1行目の順に取り出すわけです。
古いデータが上にある表を、新しい順に並べ替えたいときに重宝します。
偶数行だけを取り出すことも可能です。
=CHOOSEROWS(A1:D6, SEQUENCE(3,,2,2))
SEQUENCE(3,,2,2) は {2,4,6} を生成します。2行目・4行目・6行目が返されますよ。
テーブルと組み合わせる
Excelのテーブルを直接指定することもできます。
=CHOOSEROWS(テーブル1, 1, 3)
テーブルの場合、見出し行は含まれません。テーブルの1行目はデータの先頭行を指します。テーブルにデータが追加されると、負の数を使った指定も自動的に更新されます。
FILTER・SORTとの組み合わせ
FILTER関数やSORT関数の結果をCHOOSEROWSに渡すパターンも実務で便利です。
たとえば、FILTER関数で絞り込んだ結果の先頭3行を取り出す場合はこうなります。
=CHOOSEROWS(FILTER(A2:D6, C2:C6>=400), 1, 2)
FILTER関数で売上400以上を抽出し、その結果の1行目と2行目を取り出します。条件抽出と行選択を1つの数式で完結できるのがメリットです。
SORT関数で並べ替えた結果から上位だけ取り出す、といった使い方もできますよ。
INDEX関数との違い・使い分け
「行を取り出すならINDEX関数でもできるのでは?」と思った方もいるかもしれませんね。たしかに似ていますが、大きな違いがあります。
| 比較項目 | CHOOSEROWS関数 | INDEX関数 |
|---|---|---|
| 複数行の取り出し | できる(カンマで行番号を列挙) | 基本は1行ずつ |
| 負の数(末尾指定) | 使える(-1で最終行) | 使えない |
| 行順序の入れ替え | できる(指定順で返す) | できない |
| 対応バージョン | Microsoft 365 / Excel 2024 | 全バージョン |
| 列の同時指定 | できない(行のみ) | できる(行と列を同時指定) |
使い分けのポイントは次のとおりです。
- 1行だけ取り出す・古いバージョンを使っている場合: INDEX関数が確実です
- 複数行をまとめて取り出す・末尾から指定したい場合: CHOOSEROWS関数が便利です
- 行と列を同時に絞り込みたい場合: INDEX関数か、CHOOSEROWSとCHOOSECOLSの組み合わせを使います
Microsoft 365やExcel 2024を使っているなら、複数行の抽出にはCHOOSEROWSのほうがシンプルに書けますよ。
CHOOSEROWSとCHOOSECOLSの違い
行と列の違い
CHOOSECOLS関数はCHOOSEROWSの姉妹関数です。違いはシンプルで、取り出す方向が異なります。
- CHOOSEROWS: 指定した行を取り出す(横方向のデータ)
- CHOOSECOLS: 指定した列を取り出す(縦方向のデータ)
どちらも負の数が使える点や、複数指定・順序変更ができる点は共通しています。
組み合わせて使う方法
CHOOSEROWSとCHOOSECOLSを組み合わせると、行と列の両方を絞り込めます。
=CHOOSEROWS(CHOOSECOLS(A1:D6, 1, 3), 2, 4)
この数式は以下の2ステップで動作します。
- CHOOSECOLS(A1:D6, 1, 3) → A列(名前)とC列(売上)を取り出す
- CHOOSEROWS(…, 2, 4) → その結果の2行目と4行目を取り出す
最終結果は次のとおりです。
| 田中 | 500 |
|---|---|
| 山田 | 280 |
必要な行と列だけをピンポイントで取り出せます。大きな表から特定のデータだけを抜き出すときに便利ですよ。
似た機能を持つDROP関数は「不要な行・列を除く」アプローチです。CHOOSEROWSは「必要な行を選ぶ」アプローチなので、目的に応じて使い分けてくださいね。
よくあるエラーと対処法
#VALUE!エラー
CHOOSEROWS関数で最も発生しやすいエラーです。
原因1: 行番号に0を指定している
=CHOOSEROWS(A1:D6, 0) → #VALUE!エラー
行番号は1以上、または-1以下で指定します。0は使えません。
原因2: 配列の行数を超える番号を指定している
=CHOOSEROWS(A1:D6, 7) → #VALUE!エラー
A1:D6は6行しかないため、7を指定するとエラーです。負の数も同様で、-7と指定してもエラーになります。配列の行数を確認してみてください。
スピルエラー(#SPILL!)
CHOOSEROWS関数の結果が展開される先のセルに、すでにデータが入っているとスピルエラーになります。
結果が展開される範囲のセルを空にすれば解消されますよ。
まとめ
ExcelのCHOOSEROWS関数について解説しました。ポイントを整理しておきましょう。
- CHOOSEROWS関数は、配列から指定した行を取り出す関数
- 構文は
=CHOOSEROWS(配列, 行番号1, [行番号2], ...)で、行番号は複数指定できる - 負の数を使うと末尾からカウントできる(-1で最終行)
- 行の順番を入れ替えて取り出すことも可能
- SEQUENCE関数と組み合わせると、逆順や偶数行の抽出もできる
- INDEX関数は全バージョン対応だが、複数行の取り出しにはCHOOSEROWSが便利
- CHOOSECOLS関数と組み合わせれば、行と列の両方を自由に絞り込める
配列から必要なデータだけを取り出す場面で、ぜひ活用してみてくださいね。
関連記事
- CHOOSECOLS関数の使い方 – 配列から指定した列を取り出す
- INDEX関数の使い方 – 行と列を指定してデータを取り出す
- FILTER関数の使い方 – 条件に合うデータを抽出する
- SORT関数の使い方 – データを並べ替える
- SEQUENCE関数の使い方 – 連続する数値の配列を生成する
- DROP関数の使い方 – 配列の先頭や末尾の行・列を除く
- VSTACK関数の使い方 – 配列を縦方向に結合する
- HSTACK関数の使い方 – 配列を横方向に結合する
