スプレッドシートで売上データから上位3件だけを取り出したいこと、ありますよね。SORT関数で並べ替えたあと、手作業で範囲を選び直すのは地味に面倒です。
TAKE関数を使えば、配列の先頭や末尾から指定した数の行・列をサッと取り出せます。元データはそのまま残るので安心です。
この記事では、TAKE関数の基本的な使い方から、SORT関数との組み合わせ、DROP関数との違いまでわかりやすく解説します。
スプレッドシートのTAKE関数とは?
TAKE関数(読み方: テイク関数)は、配列やセル範囲から先頭または末尾の行・列を取り出して返す関数です。「Take(取る・取得する)」が名前の由来です。
たとえば、10行のデータから先頭3行だけを取り出すことができます。元データと数式でつながっているため、元データが更新されれば結果も自動で反映されますよ。
TAKE関数にできることをまとめると、次のとおりです。
- 配列の先頭からN行を取り出す(正の数を指定)
- 配列の末尾からN行を取り出す(負の数を指定)
- 列方向の取得もできる(第3引数を使用)
- 行と列を同時に取得することもできる
NOTE
TAKE関数はGoogleスプレッドシート独自の関数ではなく、ExcelのMicrosoft 365やExcel 2024でも使用できます。ただし、Excel 2021以前のバージョンでは使えません。
TAKE関数の基本構文
=TAKE(配列, 行数, [列数])
カッコの中に、対象の範囲と取得する行数・列数を指定します。
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 配列 | 必須 | 取得対象のセル範囲または配列 |
| 行数 | 必須 | 取得する行数。正の数で先頭から、負の数で末尾から取得 |
| 列数 | 任意 | 取得する列数。正の数で左から、負の数で右から取得 |
第2引数(行数)の符号で取得方向が決まります。正の数なら先頭から、負の数なら末尾から取得します。第3引数(列数)も同じルールです。行の取得をスキップして列だけ取得したい場合は、行数に0を指定してくださいね。
TAKE関数の基本的な使い方
ここでは、売上データからTAKE関数で行や列を取り出す例を紹介します。
サンプルデータ
A1:D7に以下のデータが入っているとします。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 日付 | 担当者 | 商品 | 売上 |
| 2 | 4/1 | 佐藤 | 商品A | 50,000 |
| 3 | 4/2 | 田中 | 商品B | 30,000 |
| 4 | 4/3 | 鈴木 | 商品C | 45,000 |
| 5 | 4/4 | 高橋 | 商品A | 60,000 |
| 6 | 4/5 | 伊藤 | 商品B | 35,000 |
| 7 | 4/6 | 佐藤 | 商品C | 55,000 |
先頭の行を取得する
先頭3行(ヘッダー含む)を取り出します。出力先のセル(たとえばF1)に以下の数式を入力して、Enterを押します。
=TAKE(A1:D7, 3)
| F | G | H | I | |
|---|---|---|---|---|
| 1 | 日付 | 担当者 | 商品 | 売上 |
| 2 | 4/1 | 佐藤 | 商品A | 50,000 |
| 3 | 4/2 | 田中 | 商品B | 30,000 |
第2引数に「3」を指定したので、先頭3行が取り出されました。「1」にすればヘッダー行だけが返ります。
末尾の行を取得する
末尾から取得するには、第2引数に負の数を指定します。
=TAKE(A1:D7, -2)
| F | G | H | I | |
|---|---|---|---|---|
| 1 | 4/5 | 伊藤 | 商品B | 35,000 |
| 2 | 4/6 | 佐藤 | 商品C | 55,000 |
「-2」を指定したので、末尾2行が取り出されました。直近のデータだけを確認したいときに便利ですよ。
列を取得する
列方向の取得には第3引数を使います。行の取得をスキップするには、行数に0を指定します。
=TAKE(A1:D7, 0, 2)
| F | G | |
|---|---|---|
| 1 | 日付 | 担当者 |
| 2 | 4/1 | 佐藤 |
| 3 | 4/2 | 田中 |
| 4 | 4/3 | 鈴木 |
| 5 | 4/4 | 高橋 |
| 6 | 4/5 | 伊藤 |
| 7 | 4/6 | 佐藤 |
行数を0にして列数を2に指定したので、左端2列(日付・担当者)だけが取り出されました。右端から取得したい場合は「-2」のように負の数を使います。
行と列を同時に取得する
行と列を同時に取得することもできます。
=TAKE(A1:D7, 3, 2)
先頭3行と左端2列を同時に取得します。ヘッダーと必要な列だけをまとめて取り出したいときに、1つの数式で済むので効率的ですよ。
TAKE関数の実務活用パターン
パターン1: SORT結果から上位N件を取り出す
売上データを降順に並べ替えて、上位3件だけを取り出します。
=TAKE(SORT(A2:D7, 4, FALSE), 3)
SORT関数で売上列(4列目)の降順に並べ替えたあと、TAKEで先頭3行を取り出しています。「並べ替えてから先頭を取る」という2ステップで考えるとわかりやすいです。
パターン2: UNIQUE結果から先頭だけ取り出す
重複を除いた結果から、先頭の数件だけを取り出せます。
=TAKE(UNIQUE(B2:B7), 3)
UNIQUE関数で重複を除いた担当者名から、先頭3件だけを取得しています。
パターン3: FILTER結果から上位N件を抽出する
条件に合うデータの中から上位N件を取り出します。
=TAKE(SORT(FILTER(A2:D7, C2:C7="商品A"), 4, FALSE), 2)
FILTER関数で「商品A」だけに絞り、SORT関数で売上降順に並べ替えています。TAKEで上位2件を取り出すことで、条件付きランキングが作れますよ。
パターン4: DROP + TAKEで中間のデータだけ抽出する
先頭と末尾の両方を除外して、中間部分だけを取り出すことができます。
=TAKE(DROP(A2:D100, 10), 10)
DROP関数で先頭10行を削除したあと、TAKEで10行だけ取り出します。つまり11行目から20行目が返ります。ページネーションのように特定範囲のデータを取り出したいときに便利ですよ。
パターン5: ヘッダー行だけを取り出してテンプレートにする
表のヘッダー行だけを別のシートに取り出して、テンプレートとして再利用できます。
=TAKE(Sheet1!A1:D1, 1)
先頭1行だけを取得するので、ヘッダー構造がそのままコピーされます。元の表でヘッダーを修正すれば、テンプレートにも自動で反映されますよ。
DROP関数との違い・使い分け
TAKE関数には、ペアとなるDROP関数があります。どちらも配列のサイズを縮小する関数ですが、アプローチが正反対です。
| 比較項目 | TAKE関数 | DROP関数 |
|---|---|---|
| 動作 | 指定した行・列を取り出して返す | 指定した行・列を削除して残りを返す |
| 構文 | =TAKE(配列, 行数, [列数]) | =DROP(配列, 行数, [列数]) |
| 引数の構造 | 完全に同じ | 完全に同じ |
| 正の数の意味 | 先頭から取得 | 先頭から削除 |
| 負の数の意味 | 末尾から取得 | 末尾から削除 |
| 結果 | 指定した部分だけ | 指定した部分を除いた残り |
同じデータに対して、TAKEとDROPの結果を比べてみましょう。
=TAKE(A1:A10, 3) → 1行目〜3行目が返る(先頭3行を取得)
=DROP(A1:A10, 3) → 4行目〜10行目が返る(先頭3行を削除)
TAKEが返す部分とDROPが返す部分は、ちょうど補い合う関係です。元の配列をTAKEの結果とDROPの結果に分割しているイメージですね。
使い分けの目安は次のとおりです。
- 上位N件だけ取り出したい → TAKE関数(「N件取る」が直感的)
- ヘッダー行や合計行を除外したい → DROP関数(「不要な行を消す」が直感的)
- 中間レコードの抽出 → DROP + TAKEの組み合わせ
迷ったときは「自分がやりたい操作は取る?消す?」と考えてみてください。意図が伝わりやすい方を選ぶと、数式が読みやすくなりますよ。
よくあるエラーと対処法
TAKE関数はシンプルですが、取得する行数の指定を間違えるとエラーになります。
| エラー | 原因 | 対処法 |
|---|---|---|
#CALC! | 取得する行数が配列の行数を超えた | 取得行数を配列の行数以下にしてください |
#VALUE! | 行数・列数に数値以外(文字列など)を指定した | 引数が数値になっているか確認してください |
#REF! | 出力先のセルに既にデータがある | 出力先の範囲を空にしてください |
#NAME? | 関数名のスペルミス | 「TAKE」のスペルを確認してください |
特に注意したいのが #CALC! エラーです。たとえば5行しかないデータに =TAKE(A1:A5, 10) と指定すると、存在しない行を取得しようとしてエラーが発生します。
取得前に行数を確認する方法で回避できます。
=IF(ROWS(A1:D10)>=3, TAKE(A1:D10, 3), A1:D10)
ROWS関数で行数を取得し、取得可能な場合だけTAKEを実行しています。
TIP
IFERRORで囲む方法もありますが、他のエラーまで隠してしまう点に注意してください。原因を特定しやすくするには、IF+ROWSの組み合わせがおすすめです。
まとめ
TAKE関数は、配列から指定した行・列を取り出して返す関数です。正の数で先頭から、負の数で末尾から取得できるシンプルな仕組みです。
この記事のポイントをおさらいしておきましょう。
- TAKE関数は
=TAKE(配列, 行数)で、先頭または末尾の行を取り出す - 正の数で先頭から取得、負の数で末尾から取得。符号を変えるだけで方向が切り替わる
- 第3引数を指定すれば、列方向の取得や行と列の同時取得もできる
- SORT関数と組み合わせれば上位N件の抽出が簡単にできる
- DROP関数はペア関数で、「指定した分だけ取り出す」のがTAKE、「削除して残す」のがDROP
- 取得行数が配列の行数を超えると
#CALC!エラー。ROWS関数で事前チェックすると安全
まずは =TAKE(A1:D10, 3) の先頭3行取得から試してみてください。SORT関数やFILTER関数と組み合わせれば、ランキング表や条件付き抽出がグッと効率的になりますよ。
