TAKE関数は表の先頭(または最後)から指定した行数・列数を取り出す関数、DROP関数は反対に指定した行数・列数を除いた残りを返す関数です。「見出しを除いたデータだけ」「最新の5件だけ」「並べ替えた上位3件だけ」を、式1つで表として取り出せます。
この記事では、TAKE・DROP 関数の書き方から、マイナスの数で最後から取り出す方法、SORT と組み合わせた上位○件の取り出し、#CALC! や #スピル! になるときの直し方まで、実際の Excel の画面で説明します。
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)

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(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)

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

| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| #CALC! になる | TAKE の行数に 0/DROP ですべての行を除いた | 取り出す・残す行が1行以上になるようにする。 |
| #スピル! になる | 結果が広がる先のセルに何か入っている | 結果が入る範囲を空ける。 |
| #NAME? になる | TAKE・DROP が使えない Excel | Microsoft 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 になりました。

コメント