【エクセル】TAKE関数で先頭や末尾のデータを抽出する方法。SORT、FILTER関数と組み合わせ

エクセルのTAKE関数で先頭や末尾のデータを返す方法

Excel(エクセル)のデータの先頭や末尾のデータを取得したいと思ったことはないでしょうか。

たとえば、点数の上位3行や下位3行を取得する場合などです。

このように、データの先頭や末尾の行や列を取得したいときは、TAKE関数を利用すると便利です。

TAKE関数は認知度が低い関数ですが、他の関数と利用することで、実用性が大幅にUPします。

この記事では、TAKE関数を使い方と、他の関数と組み合わせた実務に役立つ具体的な事例を紹介します。

しれ~っと登場した新関数だけど、かなり実務で使えるよ!

私

エクセルのTAKE関数とは?

エクセルのTAKE関数とは、一体どんな関数なのか紹介します。

まずは、「こんなことができる関数なのか」というくらいでいいので、イメージしてみてください。

TAKE関数は先頭や末尾のデータを抽出する関数

TAKE関数は、指定したデータの先頭や末尾の行や列を返す関数です。

例えば、下の図のように、G3セルに「=TAKE(B3:E11,3)」と挿入します。

そうすると、スピル機能が働いて、左側の表の上から3行のデータを抽出することができます。

図解.TAKE関数とは先頭や末尾のデータを取得
図解.TAKE関数とは先頭や末尾のデータを取得

上の例では先頭の3行のデータを取得していますが、末尾の3行を取得したり、右側の3列を取得するといったことも可能です。

一見、「どんな場面で役立つの?」と思ったかもれません。

このTAKE関数は、「テーブル機能」やFILTER関数、SORT関数、CHOOSECOLS関数などと組み合わせることで、高度な抽出する条件を設定することができます。

たとえば、下の図のように、データがどんな大きさや並び順であっても、『上位3位のデータを降順で並べ替えて抽出する』、といったこともできます。

TAKE関数の応用テクニックで上位3位を抽出する
TAKE関数の応用テクニックで上位3位を抽出する

ただ残念ながら、TAKE関数は、25年2月時点ではMicrosoft365(サブスクリプション)を利用しているユーザーしか利用できません。

今後、新しいExcelバージョンで標準搭載されて利用できることが期待されています。

TAKE関数とRANK.EQ関数との違い

TAKE関数の上の説明を見て、『順位をつけることができるRANK.EQ関数と似ている?』と思った方もいるかもしれません。

しかし、下の図のように、RANK.EQ関数は指定したセル範囲の中でのランクを調べることだけしかできません。

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)

TAKE関数の基本的な使い方.先頭の行を取得
TAKE関数の基本的な使い方.先頭の行を取得

逆に、選択したデータ範囲から、末尾の3行のデータを取得するには、第2引数を「-3」とします。

=TAKE(B3:D11,-3)

TAKE関数の基本的な使い方.後半の行を取得
TAKE関数の基本的な使い方.後半の行を取得

このように、TAKE関数では、先頭や末尾の行のデータを取得することができます。

下の図のように、フィルターで昇順や降順で並べ替えしてTAKE関数を使用することで、上位や下位のデータを抽出することもできます。

フィルターで降順で並べ替えしたデータにTAKE関数を使用
フィルターで降順で並べ替えしたデータにTAKE関数を使用

TAKE関数/使い方2.先頭や末尾の「列」を抽出する

TAKE関数は、第3引数「列」を使うことで、列のデータを抽出することもできます。

選択したデータ範囲から、末尾の2列のデータを取得するには、以下のようにTAKE関数を使用します。

=TAKE(B3:E11,,-2)

TAKE関数の基本的な使い方.後半の列を取得
TAKE関数の基本的な使い方.後半の列を取得

第2引数「行」は指定しないので、第3引数の前には、カンマ(,)を2つ挿入するのがポイントです。

TAKE関数/使い方3.先頭や末尾の「列」と「行」を抽出する

TAKE関数の第2引数「行」と第3引数「列」を共に指定することで、行と列のデータを同時に抽出することもできます。

先頭の3行、末尾の2列を取得する場合は、以下のようにTAKE関数を作成します。

=TAKE(B3:E11,3,-2)

TAKE関数の基本的な使い方.行と列を同時に取得
TAKE関数の基本的な使い方.行と列を同時に取得

TAKE関数/使い方4.テーブルと組み合わせる

TAKE関数で指定している元表(配列)の大きさが変わるたびに、TAKE関数の引数を変更するのは大変です。

そんなとき、元表に「テーブル」機能を設定しておくと、TAKE関数の引数の設定が簡単になったり、可変データに対応することができます。

データの下に新しい行を追加しても引数を修正する必要ないから、むちゃ便利だよ。

私

⇩「テーブル」の詳しい使い方

まず、元データの任意のセルをクリックした状態で、「Ctrl」キーを押しながら「T」キーを押します。

「テーブルの作成」ダイアログボックスが表示されるので、テーブルのセル範囲を確認して「OK」を押します。

表にテーブルを設定する方法
表にテーブルを設定する方法

セル範囲を選択すると、A1セルの左上の「名前ボックス」にテーブルの名前が「テーブル1」と設定されたことを確認します。

テーブルの名前を変えたい場合は、「数式」タブの「名前の管理」ボタンから変更することができます。

テーブルの名前を確認
テーブルの名前を確認

TAKE関数の第1引数にテーブル名を入力して使用します。テーブル名を直接キーボード入力するか、B3セルからD11セルをドラッグして指定しても挿入することができます。

=TAKE(テーブル1,-3)

TAKE関数にテーブルを使用する方法
TAKE関数にテーブルを使用する方法

そうすると、下の図のように、テーブル範囲の下から3行を抽出することができました。

TAKE関数にテーブルを使った結果
TAKE関数にテーブルを使った結果

元データの最下行(12行目)にデータを追加してみます。そうすると、TAKE関数の引数を変更しなくても、自動で末尾の3行を取得してくれます。

元データの最下行にデータを追加した後のTAKE関数の結果
元データの最下行にデータを追加した後のTAKE関数の結果

このように、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))

事例1.SUM関数とTAKE関数を組み合わせる
事例1.SUM関数とTAKE関数を組み合わせる

テーブルを設定しなくてもTAKE関数は利用できます。

ただ、テーブルを利用することで、最下行にデータを追加しても自動で合計するセル範囲を変更することができます。

TAKE関数/事例2.SORT関数と組み合わせる

並べ替えすることができるSORT関数とTAKE関数を組み合わせることができます。

そうすると、表の並びがどんな状態であっても、上位3位や下位3位など表示することができます。

まずは、SORT関数を使って、表を昇順や降順で並べ替えします。テーブルを使わない場合は、「=SORT(B3:D11,3,-1)」としても問題ありません。

=SORT(テーブル1,3,-1)

SORT関数で表を降順で並べ替え
SORT関数で表を降順で並べ替え

作成したSORT関数を囲うように、TAKE関数を挿入して、先頭の3行を抽出します。(数式の緑マーカー部分)

=TAKE(SORT(テーブル1,3,-1),3)

SORT関数とTAKE関数で上位3名を表示
SORT関数とTAKE関数で上位3名を表示

そうすると、上位3名のデータを取得することができます。左側の元表はテーブルを設定しているので、表のサイズが変わっても数式を変更する必要はありません。

SORT関数の使い方は下の記事で詳しく紹介しているので、合わせて参考にしてください。

TAKE関数/事例3.FILTER関数と組み合わせる

条件に合う値を抽出することができるFILTER関数とTAKE関数を組み合わせることができます。

例えば、表の中から『性別「男」の中から点数の上位3名を表示する』といったことが可能です。

まずは、FIND関数を使って、「性別」列が「男」のデータのみを抽出します。元データにテーブル機能を利用しない場合は、「=FILTER(B3:E11,D3:D11="男")」としてください。

=FILTER(テーブル1,テーブル1[性別]="男")

FILTER関数で男性のデータのみ表示
FILTER関数で男性のデータのみ表示

次に、SORT関数を挿入して、FILTER関数を囲うように使用します。

SORT関数で抽出したデータの「点数」列(4列目)を降順(-1)で並べ替えします。(数式の緑下線部分)

=SORT(FILTER(テーブル1,テーブル1[性別]="男"),4,-1)

SORT関数とFILTER関数を組み合わせる
SORT関数とFILTER関数を組み合わせる

最後に、TAKE関数を挿入して、上の数式を囲うように使用します。

TAKE関数で先頭の3行を表示するために、以下のように数式を作成します。(数式の緑下線部分)

=TAKE(SORT(FILTER(テーブル1,テーブル1[性別]="男"),4,-1),3)

TAKE関数とFILTER関数とSORT関数を組み合わせた結果
TAKE関数とFILTER関数とSORT関数を組み合わせた結果

そうすると、上位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)

TAKE関数とCHOOSECOLS関数を組み合わせる方法
TAKE関数とCHOOSECOLS関数を組み合わせる方法

事例2で紹介したSORT関数と組み合わせる方法も利用することで、「点数が上位3名の「氏名」列と「点数」列」だけを表示する、といったことも可能です。

=CHOOSECOLS(TAKE(SORT(B3:E11,4,-1),3),2,4)

CHOOSECOLS関数とSORT関数とTAKE関数を組み合わせる方法
CHOOSECOLS関数とSORT関数とTAKE関数を組み合わせる方法

-Excel(エクセル), 数式・関数