TAKE関数・DROP関数の使い方|エクセルで表の先頭・最後の行を取り出す・除く・上位○件

Excel TAKE関数・DROP関数の使い方|範囲から行・列を取り出す/除外する

TAKE関数は表の先頭(または最後)から指定した行数・列数を取り出す関数、DROP関数は反対に指定した行数・列数を除いた残りを返す関数です。「見出しを除いたデータだけ」「最新の5件だけ」「並べ替えた上位3件だけ」を、式1つで表として取り出せます。

この記事では、TAKE・DROP 関数の書き方から、マイナスの数で最後から取り出す方法、SORT と組み合わせた上位○件の取り出し、#CALC! や #スピル! になるときの直し方まで、実際の Excel の画面で説明します。

式の書き方
数式=TAKE(配列, 行数, [列数])
練習用Excelファイル(無料ダウンロード)
「基本」「末尾から」「上位3件」「よくある間違い」の4シートです。「基本」は記事内のツールと同じ表です。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

TAKE関数・DROP関数の書き方(構文)

=TAKE(配列, 行数, [列数])
=DROP(配列, 行数, [列数])
引数TAKE(取り出す)DROP(除く)
配列元の表の範囲元の表の範囲
行数取り出す行数。マイナスなら最後から除く行数。マイナスなら最後から
列数(省略可)取り出す列数。省略するとすべての列除く列数。省略すると列は除かない

TAKE・DROP は Microsoft 365・Excel 2024 で使える関数です。結果は複数のセルに広がる(スピルする)ので、式を入れるのは左上の1つのセルだけです。

基本の使い方:見出しを除く・先頭だけ取り出す

商品の表(A1:C6)から、DROP で見出しの行と ID の列を除いた表、TAKE で先頭3行・左2列の表を作ります。

=DROP(A1:C6,1,1)
エクセルのDROP関数で見出しとID列を除きTAKE関数で先頭3行2列を取り出した例
エクセルのDROP関数で見出しとID列を除きTAKE関数で先頭3行2列を取り出した例

E2 の DROP は、先頭1行(見出し)と左1列(ID)を除いた「商品名・価格」の5行になりました(②)。H2 の =TAKE(A1:C6,3,2) は、見出しを含めた先頭3行・左2列です(③)。どちらも元の表を書き換えると、結果も自動で変わります。

まず動かしてみよう|この記事のサンプルをその場で試せます

ブラウザの上で TAKE 関数・DROP 関数を試せます。「TAKE・DROP(練習ファイル)」は商品の表(A1:C6)から、DROP で見出しと ID 列を除いた表(E2)と、TAKE で先頭3行・左2列を取り出した表(H2)を作ります。練習用ファイルの「基本」シートと同じ表です。

マイナスの数で最後から取り出す・除く

行数をマイナスにすると、表の最後から数えます。行が増えていく記録表から「最新の2件」を取り出すときなどに便利です。

エクセルのTAKE関数で最後の2行を取り出しDROP関数で最後の1行を除いた例
エクセルのTAKE関数で最後の2行を取り出しDROP関数で最後の1行を除いた例
式結果
=TAKE(A2:C6,-2)最後の2行(104 パター・105 ウッド)
=DROP(A2:C6,-1)最後の1行を除いた4行(101〜104)
=TAKE(A1:C6,,-1)最後の1列(価格の列)

行数を空けて列数だけ指定する(TAKE(A1:C6,,-1))と、列だけを取り出せます。この例では「価格」の列でした。

SORT と組み合わせて上位3件を取り出す

TAKE は、ほかのスピルする関数の結果を「上から○件だけ」に絞るのにも使えます。見出しを DROP で除き、SORT で価格の高い順に並べ、TAKE で上から3件を取り出しました。

=TAKE(SORT(DROP(A1:C6,1),3,-1),3)
エクセルのTAKE関数とSORT関数とDROP関数で価格の高い順に上位3件を取り出した例
エクセルのTAKE関数とSORT関数とDROP関数で価格の高い順に上位3件を取り出した例

結果はドライバー(33,000)・ウッド(23,000)・パター(15,000)の3件です。FILTER で条件に合う行を絞ってから TAKE で件数を決める、といった組み合わせもできます(動的配列・スピル関数まとめ)。

よくある間違い

エクセルのTAKE関数とDROP関数でCALCエラーやスピルエラーになる例
エクセルのTAKE関数とDROP関数でCALCエラーやスピルエラーになる例
症状考えられる原因対処
#CALC! になるTAKE の行数に 0/DROP ですべての行を除いた取り出す・残す行が1行以上になるようにする。
#スピル! になる結果が広がる先のセルに何か入っている結果が入る範囲を空ける。
#NAME? になるTAKE・DROP が使えない ExcelMicrosoft 365・Excel 2024 で使う。INDEX などで代用する。
思ったより多く取り出される行数が表より多いと、表全体が返るエラーにはならないので、件数は ROWS で確かめる。

試したところ、=TAKE(A1:C6,0) も =DROP(A1:C6,6) も #CALC! でした(①)。表が6行なのに10行を指定すると、エラーにならず表全体(6行)が返りました(②)。結果の先に文字があると、日本語版の Excel では「#スピル!」と表示されます(③、エラー値の一覧と直し方)。

よくある質問

途中の行(2行目と4行目など)を取り出したいときは?

CHOOSEROWS 関数で行の番号を指定します(CHOOSECOLS・CHOOSEROWS関数)。

複数の表を縦につなげてから取り出せますか?

VSTACK でつないだ結果を TAKE・DROP で絞れます(VSTACK関数・HSTACK関数)。

見出しを除いた行数を数えたいときは?

=ROWS(DROP(A1:C6,1)) で 5 になりました。

練習用Excelファイル(無料ダウンロード)
この記事の例がすべて入った練習用のファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:スピルする関数の関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次