テクノロジーガイド

Excel の DROP 関数 — 行・列を動的に削除して配列を整形する

4 min read Excel 更新されました 21 Oct 2025
ExcelでDROP関数を使いこなす:行・列を動的に削除
ExcelでDROP関数を使いこなす:行・列を動的に削除

重要: DROP は Microsoft 365(Excel for Microsoft 365、web、モバイル/タブレット版)で利用できる動的配列関数です。テーブル列内にはスピルできないため、通常のセルに入力してください。

目次

  • DROP の構文
  • 基本的な動作と注意点
  • 実例(練習 1〜8)
  • 他の関数との組み合わせ
  • よくある失敗例と回避策
  • 代替アプローチと比較
  • メンタルモデル(直感的理解の助け)
  • 決定フローチャート
  • 役割別チェックリスト
  • SOP(実務向け手順)
  • テストケースと受け入れ基準
  • エッジケース集
  • 1行用語集
  • 要約

Excel の DROP 関数を示すイラスト: 行が削除され、はさみのアイコンと =DROP() フォーミュラ、下部に Excel ロゴがある。

ジャンプリンク

  • DROP の構文

  • 例: DROP 関数の実践

  • 他の関数と組み合わせる方法


Microsoft Excel の参照/検索系関数の中ではやや利用頻度が低いものの、DROP 関数はシンプルで強力です。元データを変更せずに、配列の端から指定した数の行や列を取り除いた結果を返します。動的配列として「スピル(spill)」し、隣接セルに結果が広がります。

注意: このガイドでは、元記事で使用しているサンプル表(学生のID、性別、クラス、スコア)を参照して、練習用の式と手順を逐次説明します。ワークブックをダウンロードして手を動かすと理解が早まります。

Microsoft 365 Personal のサムネイル画像

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)があります。

学生の ID、性別、クラス、点数を含む Excel テーブルのスクリーンショット

ワークブックをダウンロードすると、各練習用のシートが用意されています。テーブル形式を使う利点は、新しい行を追加しても構造化参照が自動追従する点です。

練習 1: 配列の先頭から行を削除する

目的: 上位 10 名を除いた新しいデータセットを作る。

手順:

  1. Score 列のフィルタボタンをクリックして「Sort Largest To Smallest」(大きい順)で並べ替えます。

テーブル列のフィルタボタンが押され、「Sort Largest To Smallest」が選ばれている様子

  1. 以下のように DROP を使います(テーブル名が T_Stud の場合)。
=DROP(T_Stud,10)

説明: b に 10 を指定しているため、上から 10 行を削除します。c は省略しているので列はそのままです。

代替(セル参照で柔軟にする):

=DROP(T_Stud,H1)

セル H1 に 10 と入力しておけば、H1 を変更するだけで削除行数を切り替えられます。

上位 10 行を除いたデータを抽出する DROP 関数の例

注意: 式中に直接数値を埋め込むと後で変更するのが面倒です。セル参照を活用しましょう。

練習 2: 配列の末尾から行を削除する

目的: 下位 10 名を除きたい(配列の下側を削る)。

ポイント: b を負の数にするだけです。

例(T_Stud2、H1 に 10 を入力):

=DROP(T_Stud2,-H1)

マイナスを式に付けることで、末尾(下側)から行を削除します。

下位 10 行を除くために DROP を使った例

マイナスは式側で付けても、参照セル自体に負の値を入れても、別セルで算術演算しても構いません。

練習 3: 配列の左側から列を削除する

目的: 氏名や個人情報の列を削って匿名化したい(最初の列を取り除く)。

例(T_Stud3):

=DROP(T_Stud3,,1)

説明: b(行削除)は省略し、c に 1 を指定して左から 1 列を削除します。

先頭列を削ったデータを抽出する DROP の例

練習 4: 配列の右側から列を削除する

目的: Score 列を除いて、学生、性別、クラスだけを表示したい。

例(T_Stud4):

=DROP(T_Stud4,,-1)

説明: c に -1 を指定すると、右端から 1 列が削除されます。右側に列を追加すると、その列が削られる点に注意してください。

最後の列を除くために c に負の値を与えた DROP の例

練習 5: 行と列を同時に削除する

目的: 下位 10 名を除き、右から 2 列(例: スコアと別の個人情報列)も取り除いて ID と性別だけを表示する。

例(T_Stud5、I1 に 10):

=DROP(T_Stud5,-H1,-2)

説明: b に -H1 を指定して下側から 10 行を削除し、c に -2 を指定して右側から 2 列を削除します。

下位 10 行と右から 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 列等)を削除します。

SORT をネストした DROP の例

これで、元データを別列でソートしても出力はスコア順のままになります。

練習 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)を削除します。

VSTACK と SORT を組み合わせた例

横方向に結合する場合は 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 に与えないようにするための設計です。

CHOOSECOLS, SORT, DROP を組み合わせた例


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 の方が自然です。


メンタルモデル(直感的理解)

  1. 配列を「列と行で構成されたブロック」と見る。
  2. DROP(a,b,c) は、ブロックの上から/左から b、下から/右から c を切り落とした新しいブロックを返す。
  3. 正の数は「先頭を切る」、負の数は「末尾を切る」。

これを頭に入れておけば、式を直感的に組み立てられます。


決定フローチャート(簡易)

下の 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 を除く匿名化レポートを作る

  1. 元データをテーブル(例: T_Stud)として用意する。
  2. シート右側に設定セル(例: H1)を作り「除外数」を入力。
  3. 出力セル(通常セル)を選択して、以下を入力:
=DROP(SORT(T_Stud,4,-1),H1,1)
  1. 表示が期待どおりか確認。
  2. 必要なら出力を値でコピーして静的レポートにする(アーカイブ用)。

テストケースと受け入れ基準

  • ケース 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!

チェックリスト:

  1. スピル先に値やテーブルが塞いでいないか?
  2. b/c が配列長を超えていないか?(ROWS/COLUMNS で確認)
  3. ネストしている関数の戻り値の列数と、DROP の c 指定が矛盾していないか?
  4. Excel のバージョンは Microsoft 365 系か?(旧バージョンは非対応)

まとめ

DROP 関数は、配列の端から行や列を簡潔に取り除くための実用的なツールです。動的配列関数と組み合わせれば、ソート、連結、列抽出などの処理を効率化できます。実務では参照セルを使ったパラメータ化、スピル先の管理、そしてエラー回避のガードを必ず組み込みましょう。

主なポイント:

  • 正/負の符号で先頭/末尾を指定する。
  • b と c のどちらかを必ず指定すること。
  • 動的配列はテーブル列にスピルできない点に注意する。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定