スプレッドシートのTAKE関数の使い方|行列を取得

スポンサーリンク

スプレッドシートで売上データから上位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に以下のデータが入っているとします。

 ABCD
1日付担当者商品売上
24/1佐藤商品A50,000
34/2田中商品B30,000
44/3鈴木商品C45,000
54/4高橋商品A60,000
64/5伊藤商品B35,000
74/6佐藤商品C55,000

先頭の行を取得する

先頭3行(ヘッダー含む)を取り出します。出力先のセル(たとえばF1)に以下の数式を入力して、Enterを押します。

=TAKE(A1:D7, 3)
 FGHI
1日付担当者商品売上
24/1佐藤商品A50,000
34/2田中商品B30,000

第2引数に「3」を指定したので、先頭3行が取り出されました。「1」にすればヘッダー行だけが返ります。

末尾の行を取得する

末尾から取得するには、第2引数に負の数を指定します。

=TAKE(A1:D7, -2)
 FGHI
14/5伊藤商品B35,000
24/6佐藤商品C55,000

「-2」を指定したので、末尾2行が取り出されました。直近のデータだけを確認したいときに便利ですよ。

列を取得する

列方向の取得には第3引数を使います。行の取得をスキップするには、行数に0を指定します。

=TAKE(A1:D7, 0, 2)
 FG
1日付担当者
24/1佐藤
34/2田中
44/3鈴木
54/4高橋
64/5伊藤
74/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関数と組み合わせれば、ランキング表や条件付き抽出がグッと効率的になりますよ。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました