Excel(エクセル)のデータの先頭や末尾のデータを取得したいと思ったことはないでしょうか。
たとえば、点数の上位3行や下位3行を取得する場合などです。
このように、データの先頭や末尾の行や列を取得したいときは、TAKE関数を利用すると便利です。
TAKE関数は認知度が低い関数ですが、他の関数と利用することで、実用性が大幅にUPします。
この記事では、TAKE関数を使い方と、他の関数と組み合わせた実務に役立つ具体的な事例を紹介します。
しれ~っと登場した新関数だけど、かなり実務で使えるよ!

エクセルのTAKE関数とは?
エクセルのTAKE関数とは、一体どんな関数なのか紹介します。
まずは、「こんなことができる関数なのか」というくらいでいいので、イメージしてみてください。
TAKE関数は先頭や末尾のデータを抽出する関数
TAKE関数は、指定したデータの先頭や末尾の行や列を返す関数です。
例えば、下の図のように、G3セルに「=TAKE(B3:E11,3)」と挿入します。
そうすると、スピル機能が働いて、左側の表の上から3行のデータを抽出することができます。
上の例では先頭の3行のデータを取得していますが、末尾の3行を取得したり、右側の3列を取得するといったことも可能です。
一見、「どんな場面で役立つの?」と思ったかもれません。
このTAKE関数は、「テーブル機能」やFILTER関数、SORT関数、CHOOSECOLS関数などと組み合わせることで、高度な抽出する条件を設定することができます。
たとえば、下の図のように、データがどんな大きさや並び順であっても、『上位3位のデータを降順で並べ替えて抽出する』、といったこともできます。
ただ残念ながら、TAKE関数は、25年2月時点ではMicrosoft365(サブスクリプション)を利用しているユーザーしか利用できません。
今後、新しいExcelバージョンで標準搭載されて利用できることが期待されています。
TAKE関数とRANK.EQ関数との違い
TAKE関数の上の説明を見て、『順位をつけることができるRANK.EQ関数と似ている?』と思った方もいるかもしれません。
しかし、下の図のように、RANK.EQ関数は指定したセル範囲の中でのランクを調べることだけしかできません。
一方、TAKE関数はSORT関数などと組み合わせることで、『抽出するデータの行数を絞って、さらに並べ替えも行う』ことができます。
TAKE関数は、他の関数と組み合わせることで、さまざまなデータ加工を行い、その中の特定の行数(列数)だけを抽出できるとイメージしてください。
⇩RANK.EQ関数の使い方
TAKE関数の書式と引数
TAKE関数の書式(構文)と引数は、以下のとおりです。
=TAKE(配列,行,[列])
英語での構文は「=TAKE(array, rows,[columns])」となります。
それぞれの引数の内容は以下のとおりです。
第1引数「配列」
取得したいデータのセル範囲かテーブル名を指定します。(例:B3:E11、テーブル1)
第2引数「行」
先頭から取得したい行数を指定します。 マイナスの数値で指定すると、配列の末尾から取得します。(例:3、-3)
第3引数「列」
省略可能です。先頭から取得したい列数を指定します。 マイナスの数値で指定すると、配列の末尾から列を取得します。(例:3、-3)
TAKE関数の基本的な使い方
TAKE関数の基本的な使い方を4つ紹介します。
上記で紹介したように、TAKE関数は他の関数と組み合わせて使用することが多いですが、まずはTAKE関数だけで利用する方法を学習しましょう。
TAKE関数/使い方1.先頭や末尾の「行」を抽出する
選択したデータ範囲から、先頭の3行のデータを取得するには、以下のようにTAKE関数を使用します。
=TAKE(B3:D11,3)
逆に、選択したデータ範囲から、末尾の3行のデータを取得するには、第2引数を「-3」とします。
=TAKE(B3:D11,-3)
このように、TAKE関数では、先頭や末尾の行のデータを取得することができます。
下の図のように、フィルターで昇順や降順で並べ替えしてTAKE関数を使用することで、上位や下位のデータを抽出することもできます。
TAKE関数/使い方2.先頭や末尾の「列」を抽出する
TAKE関数は、第3引数「列」を使うことで、列のデータを抽出することもできます。
選択したデータ範囲から、末尾の2列のデータを取得するには、以下のようにTAKE関数を使用します。
=TAKE(B3:E11,,-2)
第2引数「行」は指定しないので、第3引数の前には、カンマ(,)を2つ挿入するのがポイントです。
TAKE関数/使い方3.先頭や末尾の「列」と「行」を抽出する
TAKE関数の第2引数「行」と第3引数「列」を共に指定することで、行と列のデータを同時に抽出することもできます。
先頭の3行、末尾の2列を取得する場合は、以下のようにTAKE関数を作成します。
=TAKE(B3:E11,3,-2)
TAKE関数/使い方4.テーブルと組み合わせる
TAKE関数で指定している元表(配列)の大きさが変わるたびに、TAKE関数の引数を変更するのは大変です。
そんなとき、元表に「テーブル」機能を設定しておくと、TAKE関数の引数の設定が簡単になったり、可変データに対応することができます。
データの下に新しい行を追加しても引数を修正する必要ないから、むちゃ便利だよ。

⇩「テーブル」の詳しい使い方
まず、元データの任意のセルをクリックした状態で、「Ctrl」キーを押しながら「T」キーを押します。
「テーブルの作成」ダイアログボックスが表示されるので、テーブルのセル範囲を確認して「OK」を押します。
セル範囲を選択すると、A1セルの左上の「名前ボックス」にテーブルの名前が「テーブル1」と設定されたことを確認します。
テーブルの名前を変えたい場合は、「数式」タブの「名前の管理」ボタンから変更することができます。
TAKE関数の第1引数にテーブル名を入力して使用します。テーブル名を直接キーボード入力するか、B3セルからD11セルをドラッグして指定しても挿入することができます。
=TAKE(テーブル1,-3)
そうすると、下の図のように、テーブル範囲の下から3行を抽出することができました。
元データの最下行(12行目)にデータを追加してみます。そうすると、TAKE関数の引数を変更しなくても、自動で末尾の3行を取得してくれます。
このように、TAKE関数はテーブルと一緒に利用すると、利便性がUPします。
次の見出しからTAKE関数の事例を紹介していきますが、テーブル機能が活躍します。
TAKE関数を使った事例・具体例
TAKE関数を使った事例・具体例を4つ紹介します。
実務で役立つ使い方に厳選したので、どんなことができるのかイメージして実践に役立ててください。
ポイント
事例1.TAKE関数×テーブル×SUM関数
事例2.TAKE関数×SORT関数
事例3.TAKE関数×FILTER関数×SORT関数
事例4.TAKE関数×CHOOSECOLS関数
TAKE関数/事例1.テーブル×SUM関数
TAKE関数とSUM関数を組み合わせることができます。
以下のように数式を挿入すると、テーブルで設定した表に対して、常に末尾の3行の合計を計算することができます。
=SUM(TAKE(テーブル1,-3,-1))
テーブルを設定しなくてもTAKE関数は利用できます。
ただ、テーブルを利用することで、最下行にデータを追加しても自動で合計するセル範囲を変更することができます。
TAKE関数/事例2.SORT関数と組み合わせる
並べ替えすることができるSORT関数とTAKE関数を組み合わせることができます。
そうすると、表の並びがどんな状態であっても、上位3位や下位3位など表示することができます。
まずは、SORT関数を使って、表を昇順や降順で並べ替えします。テーブルを使わない場合は、「=SORT(B3:D11,3,-1)」としても問題ありません。
=SORT(テーブル1,3,-1)
作成したSORT関数を囲うように、TAKE関数を挿入して、先頭の3行を抽出します。(数式の緑マーカー部分)
=TAKE(SORT(テーブル1,3,-1),3)
そうすると、上位3名のデータを取得することができます。左側の元表はテーブルを設定しているので、表のサイズが変わっても数式を変更する必要はありません。
SORT関数の使い方は下の記事で詳しく紹介しているので、合わせて参考にしてください。
TAKE関数/事例3.FILTER関数と組み合わせる
条件に合う値を抽出することができるFILTER関数とTAKE関数を組み合わせることができます。
例えば、表の中から『性別「男」の中から点数の上位3名を表示する』といったことが可能です。
まずは、FIND関数を使って、「性別」列が「男」のデータのみを抽出します。元データにテーブル機能を利用しない場合は、「=FILTER(B3:E11,D3:D11="男")」としてください。
=FILTER(テーブル1,テーブル1[性別]="男")
次に、SORT関数を挿入して、FILTER関数を囲うように使用します。
SORT関数で抽出したデータの「点数」列(4列目)を降順(-1)で並べ替えします。(数式の緑下線部分)
=SORT(FILTER(テーブル1,テーブル1[性別]="男"),4,-1)
最後に、TAKE関数を挿入して、上の数式を囲うように使用します。
TAKE関数で先頭の3行を表示するために、以下のように数式を作成します。(数式の緑下線部分)
=TAKE(SORT(FILTER(テーブル1,テーブル1[性別]="男"),4,-1),3)
そうすると、上位3名の「男性」のデータを取得することができます。左側の元表はテーブルを設定しているので、表のサイズが変わっても数式を変更する必要はありません。
もちろん、テーブルを使用しなくても、数式を作成することは可能です。
FILTER関数の使い方は下の記事で詳しく紹介しているので、合わせて参考にしてください。
TAKE関数/事例4.CHOOSECOLS関数と組み合わせる
CHOOSECOLS関数とTAKE関数を組み合せた事例を紹介します。
CHOOSECOLS関数は、指定した配列(セル範囲)から、特定の列のデータの値を返す関数です。
=CHOOSECOLS(配列,列1,列2,…)
TAKE関数で先頭や末尾の行を取得することができますが、表示する列を絞りたい場合があります。
そんなとき、TAKE関数とCHOOSECOLS関数を組み合わせると実現することができます。
例えば、TAKE関数で取得した結果のうち、2列目「氏名」と4列目「生年月日」だけを表示させたい場合は、以下のようにCHOOSECOLS関数を使用します。
=CHOOSECOLS(TAKE(B3:E11,4),2,4)
事例2で紹介したSORT関数と組み合わせる方法も利用することで、「点数が上位3名の「氏名」列と「点数」列」だけを表示する、といったことも可能です。
=CHOOSECOLS(TAKE(SORT(B3:E11,4,-1),3),2,4)