Excel の DROP 関数 — 行・列を動的に削除して配列を整形する
重要: DROP は Microsoft 365(Excel for Microsoft 365、web、モバイル/タブレット版)で利用できる動的配列関数です。テーブル列内にはスピルできないため、通常のセルに入力してください。
目次
- DROP の構文
- 基本的な動作と注意点
- 実例(練習 1〜8)
- 他の関数との組み合わせ
- よくある失敗例と回避策
- 代替アプローチと比較
- メンタルモデル(直感的理解の助け)
- 決定フローチャート
- 役割別チェックリスト
- SOP(実務向け手順)
- テストケースと受け入れ基準
- エッジケース集
- 1行用語集
- 要約

ジャンプリンク
DROP の構文
例: DROP 関数の実践
他の関数と組み合わせる方法
Microsoft Excel の参照/検索系関数の中ではやや利用頻度が低いものの、DROP 関数はシンプルで強力です。元データを変更せずに、配列の端から指定した数の行や列を取り除いた結果を返します。動的配列として「スピル(spill)」し、隣接セルに結果が広がります。
注意: このガイドでは、元記事で使用しているサンプル表(学生のID、性別、クラス、スコア)を参照して、練習用の式と手順を逐次説明します。ワークブックをダウンロードして手を動かすと理解が早まります。

Microsoft 365 Personal
OS: Windows、macOS、iPhone、iPad、Android
無料体験: 1か月
Microsoft 365 には Word、Excel、PowerPoint などの Office アプリへのアクセス、OneDrive 1 TB などが含まれます。
$100 at Microsoft
DROP の構文
Excel の DROP 関数は次の 3 つの引数を取ります。
=DROP(a,b,c)- a: 行や列を削除したい対象の配列(必須)
- b: 削除する行数(正の数で先頭から、負の数で末尾から)
- c: 削除する列数(正の数で左から、負の数で右から)
重要な性質と注意点:
- 引数 a は必須です。b と c の少なくとも一方を指定しないとエラーになります。
- b と c の正負で「どちらの端」を指定します。正は先頭(上/左)、負は末尾(下/右)を意味します。
- b や c に配列の行数・列数を超える値を指定すると #CALC! エラーになります。
- DROP は動的配列関数です。結果は中心セルから隣接セルへスピルします。テーブル(構造化テーブル)の列内にはスピルできないため、通常のセルに出力してください。
重要: テーブル(ListObject)全体を引数に渡すと、列数や行数の変化に自動追従します。ただし、スピル先がテーブル列だとエラーになります。
例: DROP 関数の実践
ここからは元の例を日本語で詳細に説明します。サンプル表は列 A に学生 ID、列 B に性別、列 C にクラス、列 D に点数(Score)があります。

ワークブックをダウンロードすると、各練習用のシートが用意されています。テーブル形式を使う利点は、新しい行を追加しても構造化参照が自動追従する点です。
練習 1: 配列の先頭から行を削除する
目的: 上位 10 名を除いた新しいデータセットを作る。
手順:
- Score 列のフィルタボタンをクリックして「Sort Largest To Smallest」(大きい順)で並べ替えます。

- 以下のように DROP を使います(テーブル名が T_Stud の場合)。
=DROP(T_Stud,10)説明: b に 10 を指定しているため、上から 10 行を削除します。c は省略しているので列はそのままです。
代替(セル参照で柔軟にする):
=DROP(T_Stud,H1)セル H1 に 10 と入力しておけば、H1 を変更するだけで削除行数を切り替えられます。

注意: 式中に直接数値を埋め込むと後で変更するのが面倒です。セル参照を活用しましょう。
練習 2: 配列の末尾から行を削除する
目的: 下位 10 名を除きたい(配列の下側を削る)。
ポイント: b を負の数にするだけです。
例(T_Stud2、H1 に 10 を入力):
=DROP(T_Stud2,-H1)マイナスを式に付けることで、末尾(下側)から行を削除します。

マイナスは式側で付けても、参照セル自体に負の値を入れても、別セルで算術演算しても構いません。
練習 3: 配列の左側から列を削除する
目的: 氏名や個人情報の列を削って匿名化したい(最初の列を取り除く)。
例(T_Stud3):
=DROP(T_Stud3,,1)説明: b(行削除)は省略し、c に 1 を指定して左から 1 列を削除します。

練習 4: 配列の右側から列を削除する
目的: Score 列を除いて、学生、性別、クラスだけを表示したい。
例(T_Stud4):
=DROP(T_Stud4,,-1)説明: c に -1 を指定すると、右端から 1 列が削除されます。右側に列を追加すると、その列が削られる点に注意してください。

練習 5: 行と列を同時に削除する
目的: 下位 10 名を除き、右から 2 列(例: スコアと別の個人情報列)も取り除いて ID と性別だけを表示する。
例(T_Stud5、I1 に 10):
=DROP(T_Stud5,-H1,-2)説明: b に -H1 を指定して下側から 10 行を削除し、c に -2 を指定して右側から 2 列を削除します。

他の関数と組み合わせる
DROP の真価は、動的配列関数群と組み合わせたときに発揮されます。以下に代表的なユースケースを示します。
練習 6: SORT とネストして常に所望の順に並べる
問題: 元データを別の列で一時的に並べ替えると、DROP の出力順が崩れる。
解決: DROP の中で SORT を使ってから削除すれば、出力は常に指定したキーで並びます。
例(T_Stud6、H1=10):
=DROP(SORT(T_Stud6,4,-1),-H1,1)- SORT(T_Stud6,4,-1) は 4 列目(Score)を降順でソートします。
- DROP(…,-H1,1) はその結果から下位 10 行を削り、左から 1 列(ID 列等)を削除します。

これで、元データを別列でソートしても出力はスコア順のままになります。
練習 7: VSTACK と組み合わせて複数テーブルを横断
目的: クラス別に分かれた複数のテーブルを縦に結合して、上位を除外する。
例(T_Blue, T_Green, T_Yellow、G1 に 10):
=DROP(SORT(VSTACK(T_Blue,T_Green,T_Yellow),3,-1),G1)- VSTACK が各テーブルを縦に連結します。
- SORT(…,3,-1) が 3 列目(Score)で降順ソートします。
- DROP(…,G1) が上から G1 行(ここでは 10)を削除します。

横方向に結合する場合は HSTACK を使います。
練習 8: CHOOSECOLS と組み合わせて列を抽出してからさらに削る
目的: スコアでソートし、クラス列のみを取り出し、下位 10 を削る(両端から削る応用)。
例(T_Stud8、I1 に 10):
=DROP(CHOOSECOLS(SORT(T_Stud8,4,-1),3),-I1)- SORT(T_Stud8,4,-1): スコアで降順ソート
- CHOOSECOLS(…,3): 3 列目(Class)のみを抽出
- DROP(…,-I1): 下側(末尾)から I1 行を削除
注意: CHOOSECOLS を DROP にネストする場合、CHOOSECOLS の性質上、DROP では行数(b)だけを指定できます。逆に CHOOSEROWS をネストすると列数(c)だけが指定可能です。これは両者が互いに矛盾する指示を Excel に与えないようにするための設計です。

DROP と TAKE の違い(比較)
- DROP: 配列の端から指定数を取り除く。残りを返す。例: =DROP(A,10) は上から 10 行を削除して残りを返す。
- TAKE: 配列の端から指定数だけ残す。例: =TAKE(A,10) は上から 10 行だけを返す。
両者は同じ引数構造を持ち、同じ Excel バージョンで利用可能です。用途に応じて使い分けてください。
よくある失敗例と回避策
- スピル先がテーブル列でエラーになる
- 回避: 結果を通常のセルに出す。あるいはテーブルを解除(または表外に配置)する。
- 引数に配列を誤って二重で渡す
- 回避: テーブル名や範囲を正しく確認する。VSTACK/HSTACK で結合したときの列数とソートキーの列番号をチェックする。
- b や c に配列より大きな数を指定して #CALC! を出してしまう
- 回避: ROWS / COLUMNS 関数で長さを事前確認するか、MIN や IFERROR を使う。
例: 安全に上から n 行を削除する(n が配列長未満か確認):
=LET(n,H1, len,ROWS(T_Stud), DROP(T_Stud, MIN(n, len-1)))注: 上の例では len-1 を使い、配列全消去を避けています。全消去が許容される場合は別途設計してください。
代替アプローチ
- FILTER を使って条件で取り除く(順位や閾値で除外する場合)
- INDEX / SEQUENCE と組み合わせてカスタムなスライスを作る
- Power Query(取得と変換)で ETL として行・列を削る
シンプルな行・列のトリムは DROP が最も簡潔です。条件つきでフィルタしたい場合は FILTER の方が自然です。
メンタルモデル(直感的理解)
- 配列を「列と行で構成されたブロック」と見る。
- DROP(a,b,c) は、ブロックの上から/左から b、下から/右から c を切り落とした新しいブロックを返す。
- 正の数は「先頭を切る」、負の数は「末尾を切る」。
これを頭に入れておけば、式を直感的に組み立てられます。
決定フローチャート(簡易)
下の Mermaid 図は、どの関数を使うべきかを判断する簡易フローです。
flowchart TD
A[データを加工したい?] --> B{削除するのは端か?}
B -->|端| C[DROP を検討]
B -->|任意の場所| D[FILTER か INDEX を検討]
C --> E{複数テーブルを結合するか?}
E -->|はい| F[VSTACK/HSTACK を先に使う]
E -->|いいえ| G[単純に DROP'a,b,c']
F --> H[SORT を入れてから DROP]
G --> I[出力セルはテーブル外にする]
H --> I
D --> J[条件で抽出する FILTER を検討]役割別チェックリスト
データアナリスト:
- スピル先がテーブル列でないことを確認
- SORT/VSTACK の列番号と列数を確認
- エラー(#CALC!, #REF!)が出ないかテスト
教育担当(教師):
- 生徒データを匿名化する際に DROP で ID を取り除く
- 参照セル(H1 等)を使って誰でも調整できるようにする
レポート作成者:
- 表示用テーブルは別シートにスピルする
- レポートテンプレートで参照セルを明示する
SOP(標準操作手順): 上位 10 を除く匿名化レポートを作る
- 元データをテーブル(例: T_Stud)として用意する。
- シート右側に設定セル(例: H1)を作り「除外数」を入力。
- 出力セル(通常セル)を選択して、以下を入力:
=DROP(SORT(T_Stud,4,-1),H1,1)- 表示が期待どおりか確認。
- 必要なら出力を値でコピーして静的レポートにする(アーカイブ用)。
テストケースと受け入れ基準
- ケース 1: H1=10、T_Stud に 50 行 -> 出力は 40 行であること
- ケース 2: H1 が配列長より大きい -> #CALC! を想定するか、事前にガード(LEN/ROWS)を仕込む
- ケース 3: テーブルに列を追加しても、DROP が期待どおりの列数を返すこと
受け入れ基準:
- 動的に参照セルを変えたときに出力が即時更新されること
- ソートキーを変えても常に意図した列で並ぶこと(SORT を内包した場合)
エッジケースギャラリー
- 完全に削り切って 0 行/列になるケース(多くの関数は空配列あるいはエラーを返す)
- ネストした VSTACK の列数が揃っていないケース(列不一致でエラー)
- テーブルにスピルしようとして #SPILL! が出るケース
回避策: 事前に ROWS/COLUMNS, IF, LET を使って制御ロジックを入れる。
セキュリティ・プライバシー上の注意
- 個人情報を削除する際(匿名化)に DROP で列を隠すだけでは、元テーブルに元データが残ります。配布用には値化して不要列を完全に削除するか、別ファイルにエクスポートしてください。
- GDPR 等の規制準拠が必要な場合は、加工前データの取り扱いや保存場所を明確にしてください。
1行用語集
- スピル: 動的配列関数が隣接セルへ結果を自動配置する振る舞いのこと。
- VSTACK/HSTACK: テーブルや配列を縦/横に結合する関数。
- CHOOSECOLS/CHOOSEROWS: 指定した列/行だけを抽出する関数。
トラブルシューティング(短いランブック)
症状: 式を入力しても結果が表示されない / #SPILL! / #CALC!
チェックリスト:
- スピル先に値やテーブルが塞いでいないか?
- b/c が配列長を超えていないか?(ROWS/COLUMNS で確認)
- ネストしている関数の戻り値の列数と、DROP の c 指定が矛盾していないか?
- Excel のバージョンは Microsoft 365 系か?(旧バージョンは非対応)
まとめ
DROP 関数は、配列の端から行や列を簡潔に取り除くための実用的なツールです。動的配列関数と組み合わせれば、ソート、連結、列抽出などの処理を効率化できます。実務では参照セルを使ったパラメータ化、スピル先の管理、そしてエラー回避のガードを必ず組み込みましょう。
主なポイント:
- 正/負の符号で先頭/末尾を指定する。
- b と c のどちらかを必ず指定すること。
- 動的配列はテーブル列にスピルできない点に注意する。