今回は、ExcelのTAKE関数を使って、表の先頭や末尾から必要な行・列だけを抽出する方法と、並べ替えやフィルターと組み合わせて使うコツを紹介します。
この記事は、Microsoft 365のExcel(Windowsデスクトップ版)とExcel 2024を対象にしています。TAKE関数は比較的新しい関数のため、Excel 2021以前の買い切り版では使えません。ファイルを共有する相手がいる場合は、相手の環境でも使えるかを確認しておきましょう。
TAKE関数でできること
TAKE関数は、表や配列の先頭または末尾から、指定した数の行や列を取り出す関数です。取り出した結果は、数式を入力したセルから右下へ自動的に広がって表示されます(スピル)。元の表には手を加えないため、元データを残したまま「最新の5件だけ」「左の2列だけ」といった表を作れます。
構文は次のとおりです。
=TAKE(配列, 行数, [列数])
- 配列:取り出す元になるセル範囲や配列
- 行数:取り出す行の数。正の数なら先頭から、負の数なら末尾から取り出します。
- 列数:取り出す列の数。省略できます。正負の考え方は行数と同じです。
行数を省略して列数だけを指定したい場合は、=TAKE(A2:C10,,2)のように、カンマを2つ続けて行数を空けます。
基本の使い方を例で確認する
A2:C10に「日付」「担当者」「売上」の表があるとします。次の数式で、それぞれ取り出す範囲が変わります。
- =TAKE(A2:C10,3):先頭の3行(3列すべて)
- =TAKE(A2:C10,-3):末尾の3行
- =TAKE(A2:C10,,2):すべての行の左側2列
- =TAKE(A2:C10,-3,-1):末尾3行の右端1列(売上だけ)
TAKE関数は「どこから何件取るか」を数で指定するだけなので、行番号を数えてINDEX関数やOFFSET関数を組み合わせる方法に比べ、数式の意味を読み取りやすいのが特長です。
見出し行を含めるかどうかに注意する
配列に見出し行まで含めると、先頭から取り出したときに見出しも1行として数えられます。データ部分だけを対象にする場合は、見出しを除いた範囲を指定しましょう。見出しも一緒に表示したい場合は、見出し行を別のセルに用意しておき、その下にTAKE関数を入力すると表の形が崩れません。
データが増えても最新の数件を表示するコツ
日付順に記録を追加していく表で「直近の5件」を常に表示したい場合は、末尾から取り出す負の行数が役立ちます。
ここで便利なのが、元の表をテーブルに変換しておく方法です。表内のセルを選択して[挿入]タブの[テーブル]を選び、テーブル名を「売上表」などにしておくと、次のように書けます。
=TAKE(売上表,-5)
テーブルは行を追加すると範囲が自動で広がるため、新しい記録を入力するたびに、TAKE関数の結果も最新の5件に切り替わります。セル範囲で指定した場合は、範囲の外に追加した行が対象にならないので注意しましょう。
ほかの関数と組み合わせて活用する
TAKE関数は、配列を返す関数と組み合わせると使い道が広がります。
SORT関数と組み合わせて上位を取り出す
売上の多い順に並べ替えてから先頭を取り出せば、上位の一覧を作れます。
=TAKE(SORT(A2:C10,3,-1),3)
SORT関数で3列目(売上)を降順に並べ替え、その先頭3行をTAKE関数で取り出しています。元の表の順番は変わらないため、記録用の表と報告用の表を分けて管理できます。行数を負の数にすれば、下位の3件を取り出すことも可能です。
FILTER関数と組み合わせて条件付きで絞り込む
特定の担当者の記録だけを抽出し、その中から最新の数件を表示することもできます。
=TAKE(FILTER(A2:C10,B2:B10="佐藤"),-3)
FILTER関数で担当者が「佐藤」の行を抽出し、その末尾3行を取り出しています。担当者名をセルに入力しておき、数式の”佐藤”をそのセル参照に置き換えると、名前を変えるだけで結果を切り替えられます。
CHOOSECOLS関数で必要な列にしぼる
TAKE関数で取れる列は、先頭または末尾から連続した列に限られます。「1列目と3列目だけ」のように離れた列が必要な場合は、CHOOSECOLS関数と組み合わせます。
=CHOOSECOLS(TAKE(A2:C10,-5),1,3)
末尾5行を取り出したあと、その中から1列目と3列目を選んでいます。
エラーが表示されたときの確認ポイント
TAKE関数で思いどおりの結果にならないときは、次の点を確認します。
- #CALC!エラー:行数または列数に0を指定すると、結果が空の配列になり#CALC!エラーが返されます。行数をセル参照で指定している場合は、そのセルが空欄や0になっていないかを確かめましょう。FILTER関数と組み合わせたときに、条件に合う行が1件もない場合もこのエラーになることがあります。
- #SPILL!エラー:結果を表示する範囲のセルに、すでに値などが入力されていると表示されます。数式の右側や下側のセルを空けておきます。
- #NUM!エラー:配列が大きすぎる場合に返されます。対象範囲を必要な部分にしぼります。
DROP関数との使い分け
TAKE関数と対になる関数として、DROP関数があります。TAKE関数が「指定した数だけ残す」のに対し、DROP関数は「指定した数だけ除く」関数です。
- 最新の5件だけを見たい → TAKE関数で末尾5行を取り出す
- 先頭の説明行や末尾の合計行を除きたい → DROP関数で該当行を除外する
取り出したい件数が決まっているならTAKE関数、取り除きたい件数が決まっているならDROP関数と考えると、選びやすくなります。
まとめ
TAKE関数は、表の先頭や末尾から指定した数の行・列を抽出できる関数です。行数を正の数にすれば先頭から、負の数にすれば末尾から取り出せます。
元の表をテーブルにしておけば、データを追加しても最新の数件を自動で表示できます。SORT関数と組み合わせれば上位の一覧、FILTER関数と組み合わせれば条件に合う最新の記録、CHOOSECOLS関数と組み合わせれば必要な列だけの表を作れます。Microsoft 365またはExcel 2024の環境で、元データを残したまま集計用の表を作りたいときに役立ててください。