Excelで行を固定する方法: 実際に機能する5つの方法
Iron Software チームによる執筆。 Excelワークフローをプログラムで自動化しようとしている場合は、 IronXL製品ページ を訪れて.NETで強力なスプレッドシートソリューションを構築する方法をご覧ください。
データ駆動型の意思決定の世界では、分析はそれが基づくデータの質によって決まります。 重複情報、一般に重複として知られるものは、財務合計を歪め、リード数を膨らませ、顧客コミュニケーションで恥ずかしいエラーを引き起こします。 メーリングリストを整理する場合や月次経費を調整する場合、Excelで重複を削除する方法を知っていることは、プロフェッショナルにとって欠かせないスキルです。
Excelで重複をすばやく削除する方法は、重複の削除ボタンをデータタブで使用することです。 データセットを選択し、データ > 重複の削除をクリックし、一致をチェックしたい列を選択してOKをクリックします。 これにより、すべての重複エントリが即座に削除され、表にユニークなレコードだけが残ります。
方法1: 最速の方法(データツールコマンド)
ほとんどのオフィスのタスクでは、複雑な数式は必要ありません。 Excelには重複した値を数秒でクリーンするための専用の"核オプション"が含まれています。
Microsoft Excelの重複を削除ツールの使用方法
- データ範囲を選択: データテーブル内のどこかをクリックします。 Excelは通常、境界を検出するのに十分賢いですが、指定したエリアを選択するためにクリック&ドラッグすることもできます。

- データタブに移動: 上部のリボンを見て データをクリックします。
![]()
-
重複の削除をクリック: データツールグループに重複の削除アイコンがあります。
- ダイアログを設定: * データに見出しがある: 最初の行にタイトル(例:"名前"や"日付")が含まれている場合にチェックします。

* **列を選択:** Excelが行を重複とみなすために、どの列が同一でなければならないかを選択します。 すべての列を選択した場合、100%同一の行のみが削除されます。
- OKをクリック: Excelはどれだけの重複値が発見されて削除されたか、そしてどれだけのユニークな値が残っているかを表示します。

キーボードショートカットの使用
マウスに触れずにこのタスクを実行するには、このシーケンスを使用します:
- Alt: リボンをアクティブにします。
- A: データタブを開きます。
- M: 重複削除機能を起動します。
方法2: "安全な"方法(高度なフィルターの使用)
標準の"削除"ツールは永久的です。 オリジナルのデータをそのままにしてユニークなリストを別の場所に抽出したい場合は、高度なフィルターが最良です。
ユニークなレコードを抽出する手順
- データ範囲を選択します。
-
データタブに移動し、高度(フィルターアイコンの横)をクリックします。
- ダイアログボックスで、別の場所にコピーを選択します。
-
リスト範囲が正しいことを確認します。
-
コピー先ボックスに、クリーンデータを始めたいセルをクリックします。
-
重要なステップ: ユニークなレコードのみにチェックを入れます。
- OKをクリックします。
これにより、オリジナルを触れることなく、監査目的に理想的な新しいクリーンなリストが作成されます。
方法3: Excel重複を動的に削除する方法(UNIQUE関数)
Excel 365またはExcel 2021+を使用している場合、"Office 365公式"を使用でき、自動的に更新されます。 これは手動のボタンよりもはるかに強力で、オリジナルのリストに新しいデータを追加した場合に、"ユニーク"リストがリアルタイムで更新されます。
=UNIQUE()公式の使い方
- クリーンデータを始めたい空のセルをクリックします。
-
以下の公式を入力します: =UNIQUE(A2:A500)
- Enterを押します。

Excelは結果を下方向と横方向に"流す"ので、動的なユニーク値の範囲が生成されます。
プロのヒント: 重複したセルを削除しながらリストをアルファベット順に並べ替えたい場合は、次のように公式をラップします: =SORT(UNIQUE(A2:A500))

方法4: Power Queryで重複値を削除する(大きなデータに最適)
50,000行以上のデータセットを扱う場合、標準のExcel GUIは時々ハングアップしたり遅れたりすることがあります。 Power Queryは"重い作業"を行うプロの選択です。
- データを選択し、データ > テーブル/範囲からに移動します。 OKをクリックしてPower Queryエディターを開きます。
-
重複をチェックしたい列を選択します。 (複数を選択するには Ctrl を押し続けます)。
-
列ヘッダーを右クリックします。
- 重複の削除を選択します。
- ホームタブで閉じて読み込むをクリックすると、クリーンなデータを新しいExcelシートに戻すことができます。
方法5: ピボットテーブルを使ってユニークな値を見つける
ピボットテーブルはクリーナップツールとして見過ごされがちですが、数千の行をクリーンでユニークなリストに一気に圧縮しながら、重複が何回出現したかも一度に知ることができる非常に効果的な方法です。
-
データ範囲を選択します。
- 挿入 > ピボットテーブルに移動します。
- 新しいワークシートを選択し、OKをクリックします。

-
重複を解消したいフィールドを(例:"顧客メール") 行エリアにドラッグします。
-
同じフィールドを値エリアにドラッグします。
- Excelはリスト内のすべてのユニークなメールアドレスを表示し、それに隣接してカウントが表示され、オリジナルファイルでその"重複"が何回出現したかを正確に教えます。
方法6: 大文字小文字を区別した重複を処理する(公式方法)
標準のExcelツールは"大文字小文字を区別しません"。これにより、Excelは"APPLE"と"apple"を同じものと見なします。 大文字小文字が一致する場合にのみ重複を識別する必要がある場合は、ヘルパーカラムが必要です。
- データの隣にヘルパーカラムを作成します。
-
正確な一致を確認する公式を使用します: =SUMPRODUCT(--EXACT($A$2:$A$100, A2))>1
- これにより、重複が(大文字小文字を区別した状態で)TRUEを返します。

- ヘルパーカラムをTRUEでフィルターしてその行を手動で削除します。

方法7: VBAを使用して重複を削除する(マクロ自動化)
もし毎週月曜日に混沌としたレポートを受け取るアナリストである場合、同じ5つのボタンを毎週クリックする必要はありません。 簡単なVBAスクリプトで"重複を削除"プロセスを自動化できます。
-
Alt + F11を押して、VBAエディターを開きます。
- 挿入 > モジュールに進みます。
- 次のコードを貼り付けます。
Sub RemoveAllDuplicates()
Dim ws As Worksheet
Set ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
MsgBox "Duplicate removal complete!", vbInformation
End Sub
Sub RemoveAllDuplicates()
Dim ws As Worksheet
Set ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
MsgBox "Duplicate removal complete!", vbInformation
End Sub
Option Strict On
Sub RemoveAllDuplicates()
Dim ws As Worksheet
ws = ActiveSheet
'Assuming your data starts in A1 and goes to Column C
ws.Range("A1").CurrentRegion.RemoveDuplicates(Columns:=New Integer() {1, 2, 3}, Header:=xlYes)
MsgBox("Duplicate removal complete!", vbInformation)
End Sub
- F5を押して実行します。 このマクロはデータの境界を自動的に検出し、3つの列すべてから重複を削除します。
よくある問題とトラブルシューティング
1."重複が見つかりませんでした"(でも見えてる!)
これはほぼ常に隠れたスペースが原因です。 もしあるセルが"John"で他のものが"John "と言っている場合、Excelはそれを異なるものと見なします。
- 修正: データ上でのトリム機能を使用し、末尾のスペースを取り除いた後に削除ツールを実行します。
2. テキストとして保存された数値
もしID番号がデータベースからエクスポートされた場合、いくつかは"テキスト"として、他のものは"数値"としてフォーマットされているかもしれません。
- 修正: 列を強調表示し、表示される小さい警告アイコンをクリックして、数値に変換を選択します。
3. 結合セルしている場合
Excelはデータ範囲に結合セルがある場合、重複を削除できません。
- 修正: シート全体を選択し、ホームタブでセルの結合解除をクリックし、その後クリーニングを続けます。
4. 非印刷文字
時々、ウェブからコピーされたデータは"改行なしスペース"(160番目の文字)を含んでいます。 標準のTRIM関数ではこれを捉えることができません。
- 修正: 検索と置換(Ctrl + H)を使用します。 Altキーを押し続けながら、"検索する内容"ボックスに数字パッドで0160を入力し、全て置換をクリックします。
開発者向け: IronXLを使ったプログラマティックな重複削除
企業環境で、データクリーニングは人間がスプレッドシートを開く前に行われることがよくあります。 もし.NETアプリケーションを構築しているなら、ユーザーが手動で"重複を削除"ボタンをクリックすることに頼ってはいけません。
IronXLを使うことで、このプロセスを完全に自動化できます。 ワークブックを読み込む、LINQを使って冗長な行を識別し、それをプログラムで削除し、クリーンなデータのみがデータベースまたはエンドユーザーに届くことを保証できます。
データクリーニングになぜIronXLを使用するのか?
- Excelのインストール不要: Microsoft Officeが不要でサーバー上でファイルを処理できます。
- スピード: 標準のExcel GUIよりも大規模なスプレッドシートを迅速に処理します。
- 精度: 複雑なC#ロジックを使用して、単純な行一致を超えた"重複"とみなされる定義を設定できます。
Code Snippet: Delete Duplicate Data in C
次の例は、特定の列の値に基づいてIronXLを使用して重複行を見つけて削除する方法を示しています。
using IronXL;
using System.Linq;
using System.Collections.Generic;
// Load the workbook
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Use LINQ to identify unique rows based on the 'Email' column (Column B)
var seenEntries = new HashSet<string>();
var rowsToRemove = new List<int>();
for (int i = 1; i < sheet.RowCount; i++)
{
string email = sheet["B" + (i + 1)].Value.ToString();
if (seenEntries.Contains(email))
{
rowsToRemove.Add(i);
}
else
{
seenEntries.Add(email);
}
}
// Remove the flagged duplicate rows (in reverse order to maintain index integrity)
foreach (var rowIndex in rowsToRemove.OrderByDescending(r => r))
{
sheet.Rows[rowIndex].RemoveRow();
}
// Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx");
using IronXL;
using System.Linq;
using System.Collections.Generic;
// Load the workbook
WorkBook workbook = WorkBook.Load("financial_report.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Use LINQ to identify unique rows based on the 'Email' column (Column B)
var seenEntries = new HashSet<string>();
var rowsToRemove = new List<int>();
for (int i = 1; i < sheet.RowCount; i++)
{
string email = sheet["B" + (i + 1)].Value.ToString();
if (seenEntries.Contains(email))
{
rowsToRemove.Add(i);
}
else
{
seenEntries.Add(email);
}
}
// Remove the flagged duplicate rows (in reverse order to maintain index integrity)
foreach (var rowIndex in rowsToRemove.OrderByDescending(r => r))
{
sheet.Rows[rowIndex].RemoveRow();
}
// Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx");
Imports IronXL
Imports System.Linq
Imports System.Collections.Generic
' Load the workbook
Dim workbook As WorkBook = WorkBook.Load("financial_report.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet
' Use LINQ to identify unique rows based on the 'Email' column (Column B)
Dim seenEntries As New HashSet(Of String)()
Dim rowsToRemove As New List(Of Integer)()
For i As Integer = 1 To sheet.RowCount - 1
Dim email As String = sheet("B" & (i + 1)).Value.ToString()
If seenEntries.Contains(email) Then
rowsToRemove.Add(i)
Else
seenEntries.Add(email)
End If
Next
' Remove the flagged duplicate rows (in reverse order to maintain index integrity)
For Each rowIndex In rowsToRemove.OrderByDescending(Function(r) r)
sheet.Rows(rowIndex).RemoveRow()
Next
' Save the sanitized file
workbook.SaveAs("Clean_financial_report.xlsx")
出力: オリジナルのワークシート vs. 重複削除後のワークシート

方法の比較
| 方法 |最適|データサイズ|難易度| |---|---|---|---| |データツール|クイックで一度のクリーニング|小/中|初心者| |高度なフィルター|オリジナルデータをそのままにしておく|小規模|中級| |UNIQUE関数|動的でリアルタイムで更新されるリスト|中規模|中級| |ピボットテーブル|重複頻度の分析|中規模|中級| |Power Query|複雑なクリーニングを繰り返す|大規模/エンタープライズ|上級| |VBAマクロ|反復的なローカルタスク|中規模|上級| | IronXL (.NET) |自動化されたサーバー側のクリーニング|無制限|開発者|
概要とベストプラクティス
データをクリーンにすることは正確なレポートのための第一歩です。 ワークブックをプロフェッショナルでエラーフリーに保つために:
-
データのバックアップを取る: "重複を削除"ツールを使用する前に必ずタブをコピーしてください。これは永続的であり、後でそのデータが必要な場合に"元に戻す"が難しくなることがあります。
-
まず標準化: TRIM, PROPER, CLEANを使って、重複を探す前にテキストが一貫していることを確認します。
-
削除前の確認: 条件付き書式(セルルールの強調)をまず用いて重複データをハイライトし、撃つ前にExcelが削除しようとしているものを確認します。
- 結果を確認します: 削除後、行数をチェックします。 100行を失うと思っていたのに1,000行を失った場合は、直ちにCtrl + Zを押し、ツールでの列選択を再確認してください。
Excelのスキルを次のレベルへ引き上げる準備はできていますか? IronXLの無料トライアルをお試しください。 データアナリストやソフトウェアエンジニアであるかに関わらず、適切なツールを持つことがすべての違いを生み出します。 IronXL製品ページを探索して、プロフェッショナルなコードで複雑なスプレッドシートロジックを管理する方法を学んでください。




