ExcelのTAKE関数は、配列から先頭または末尾のN件を取り出す関数です。
「売上上位3件を抽出したい」「最新N件を常に表示したい」に直接答えられます。
この記事では、基本的な使い方から、SORT・FILTER関数との組み合わせ、DROP関数との使い分けまで解説します。
対応バージョン: Microsoft 365 / Excel 2024 以降のみ。Excel 2021 以前は非対応です。
TAKE関数とは?
読み方・語源
TAKE関数(読み方:テイク)は、配列の先頭・末尾から行や列を取り出す関数です。関数名は英語の take(取り出す)に由来します。
結果は複数セルに自動展開されます(スピル動作)。
できること(ひと言で)
- 先頭N行・末尾N行の取り出し
- 先頭N列・末尾N列の取り出し
- 行と列を同時に指定した範囲の切り出し
他の配列関数と組み合わせることで、複雑な抽出も1式で書けます。
対応バージョン(Excel 365 / 2024以降)
| バージョン | 対応 |
|---|---|
| Microsoft 365(Win/Mac) | ○ |
| Excel for the web | ○ |
| Excel 2024 | ○ |
| Excel 2021 | × |
| Excel 2019 以前 | × |
TAKE関数はMicrosoft 365またはExcel 2024以降が必要です。Excel 2021は非対応です。
TAKE関数の書き方
構文と引数
=TAKE(配列, 行数, [列数])
| 引数 | 必須 | 説明 |
|---|---|---|
| 配列 | 必須 | 取り出し元の配列またはセル範囲 |
| 行数 | 必須 | 取り出す行数。正の値→先頭から、負の値→末尾から |
| 列数 | 省略可 | 取り出す列数。正の値→先頭から、負の値→末尾から |
引数「行数」「列数」の正・負の意味
行数・列数の符号で、先頭・末尾どちらから数えるかが変わります。
- 正の値: 先頭から数えてN行(列)を取り出す
- 負の値: 末尾から数えてN行(列)を取り出す
列のみを指定したい場合は、行数の位置をカンマで区切って空にします。
=TAKE(A2:C10, , 2)
第2引数を空のままにすることで、列数だけを指定できます。
先頭のN行を取り出す(正の値)
A2:C10の範囲を使うとします。先頭3行を取り出すには次のように書きます。
=TAKE(A2:C10, 3)
A2:C4に相当する3行分が返されます。
行数が実際の行数を超えても、エラーにはなりません。配列全体が返されます。
注意: 行数に 0 を指定すると
#CALC!エラーになります。0は指定しないでください。
末尾のN行を取り出す(負の値)
末尾3行を取り出すには、行数を負の値にします。
=TAKE(A2:C10, -3)
A2:C10の末尾3行が返されます。A8:C10に相当します。
注文履歴テーブルが日付の古い順に並んでいるとします。末尾3行が最新3件に相当します。
=TAKE(注文履歴テーブル, -3)
「最新N件を常に表示したい」という用途に最適です。
列を指定して取り出す
先頭N列を取り出す
A2:C10を使うとします。先頭2列を取り出すには次のように書きます。
=TAKE(A2:C10, , 2)
A2:B10に相当する2列分が返されます。
末尾N列を取り出す
末尾2列を取り出すには、列数を負の値にします。
=TAKE(A2:C10, , -2)
B2:C10に相当する2列分が返されます。
行と列を同時に指定する
行数と列数の両方を指定すると、矩形範囲を切り出せます。
A2:C10から先頭3行 × 先頭2列を取り出すとします。
=TAKE(A2:C10, 3, 2)
A2:B4に相当する範囲が返されます。
SORT関数と組み合わせてTOP N抽出
売上上位3件を抽出する例
A2:C10に「会社名・商品名・売上」が入っているとします。C列の高い順に上位3件を取り出すには次のように書きます。
=TAKE(SORT(A2:C10, 3, -1), 3)
SORT関数でA2:C10を3列目(C列)基準に降順で並べ替えます。その結果の先頭3行をTAKEで取り出します。
SORT関数の書き方:
=SORT(配列, 並べ替えインデックス, 並べ替え順序)
並べ替え順序は 1=昇順、-1=降順 です。
SORTBY+TAKEで別列基準のランキング
SORTBY関数は、表示する配列と並べ替えの基準列を別々に指定できます。
A2:C10に「会社名・商品名・売上」が入っているとします。C列の高い順に上位3件を取り出すには次のように書きます。
=TAKE(SORTBY(A2:C10, C2:C10, -1), 3)
C2:C10を基準に降順で並べ替えます。その先頭3行をTAKEで取り出します。
SORTと違い、SORTBYは表示範囲外の列を基準にすることもできます。複数の基準列を設定したい場合にも対応しています。
FILTER関数と組み合わせて条件付き抽出
条件で絞り込んだうえで先頭N件を取り出したいときは、FILTER関数と組み合わせます。
B列が「東京」の行だけを対象にするとします。先頭5件を取り出すには次のように書きます。
=TAKE(FILTER(A2:C10, B2:B10="東京"), 5)
FILTER関数で「B列=東京」の行を抽出します。その結果の先頭5件をTAKEで取り出します。
注意: FILTER関数の結果が0件の場合、
#CALC!エラーになります。IFERROR関数を使ってエラー処理を追加してください。
=IFERROR(TAKE(FILTER(A2:C10, B2:B10="東京"), 5), "該当なし")
DROP関数との使い分け
TAKE vs DROP 比較表
TAKE関数と対になる関数がDROP関数です。構文は同じですが、動作が逆になります。
| 関数 | 動作 | 使いどころ |
|---|---|---|
| TAKE | 指定部分を残す(取り出す) | 「上位3件だけほしい」 |
| DROP | 指定部分を除外する(捨てる) | 「ヘッダー行を除いた残りがほしい」 |
DROP関数の書き方:
=DROP(配列, 行数, [列数])
どちらを使うか判断基準
- 欲しい部分が決まっている → TAKE
- 除外したい部分が決まっている → DROP
A1:C10にヘッダーを含むデータが入っているとします。1行目(ヘッダー)を除いた残りを取り出すには次のように書きます。
=DROP(A1:C10, 1)
TAKEとDROPは組み合わせることもできます。ヘッダーを除いたうえで先頭3件を取り出すとします。
=TAKE(DROP(A1:C10, 1), 3)
DROP関数もTAKEと同様に、Microsoft 365 / Excel 2024以降のみ対応しています。
まとめ・注意点
TAKE関数を使うと、配列から先頭・末尾のN件を簡単に取り出せます。
できること
- 先頭・末尾からN行・N列を取り出す
- SORT・SORTBYと組み合わせてTOP N抽出
- FILTERと組み合わせて条件付き先頭N件を取得
- DROPと組み合わせてより柔軟な範囲切り出し
注意事項
| 注意点 | 詳細 |
|---|---|
| バージョン制限 | Microsoft 365 / Excel 2024以降のみ。Excel 2021は非対応 |
| 行数に0を指定しない | #CALC! エラーになる |
| 配列サイズ超過 | #NUM! エラーになる場合がある |
| 行数・列数に文字列を指定しない | #VALUE! エラーになる |
| スピル動作 | 結果は複数セルに自動展開される |
| 行数が配列を超えた場合 | エラーにならず、配列全体が返される |
TAKE関数はMicrosoft 365環境であれば今すぐ使えます。ぜひSORT関数やFILTER関数と組み合わせて活用してみてください。
配列操作系の関数についてはこちらもご覧ください。
