Excelの「データ」タブにある「重複の削除」がうまく動かないとき、症状は大きく2つに分かれます。
- ボタンが押せない:「重複の削除」がグレーで選べない。または、実行しようとするとメッセージが出て止まる
- 実行できるのに消えない:見た目が同じ行があるのに、重複は見つからなかったと表示される。または、一部しか消えない
ボタンが押せないときはシートやブックの状態が、消えないときはセルの値の違いが原因のことがほとんどです。症状に合わせて、次の順に確認してください。
ボタンが押せないときの確認順
確認しやすいものから順に並べています。
1. セルを編集中になっていないか
セルに文字を入力している途中など、セルの中にカーソルがある間は、リボンの多くのボタンが使えません。EnterキーかEscキーで編集を終えてから、もう一度選んでください。
画面左下のステータスバーに「入力」か「編集」と表示されていれば、編集中です。
2. 保護ビューや読み取り専用で開いていないか
メールに添付されたファイルやダウンロードしたファイルは、「保護ビュー」で開くことがあります。画面上部に黄色いバーが出て、編集できない状態です。内容に問題がないことを確かめたうえで、「編集を有効にする」をクリックしてください。
タイトルに「読み取り専用」と表示されている場合は、別名で保存するか、そのファイルを使っている人に確認します。
3. シートが保護されていないか
「校閲」タブに「シート保護の解除」が表示されていれば、シートが保護されています。保護されている間は、重複の削除を含む多くの編集ができません。
パスワードが設定されている場合は、作成者や管理者に確認してから解除してください。保護は意図して設定されていることが多いため、無断で外さないようにします。
4. 複数のシートをまとめて選んでいないか
CtrlキーやShiftキーでシート見出しを複数選ぶと、「グループ」の状態になり、一部の機能が使えなくなります。タイトルバーに「グループ」と表示されていれば、この状態です。
シート見出しを右クリックして「シートのグループ解除」を選ぶか、別のシート見出しを1つだけクリックしてください。
5. ピボットテーブルの中を選んでいないか
ピボットテーブル内のセルを選んでいると、重複の削除は使えません。ピボットテーブルは集計結果を表示するものなので、重複を除きたいときは元データの表に対して実行します。
ピボットテーブルの結果そのものを加工したいときは、別の場所に値として貼り付けてから実行してください。
6. 以前の「ブックの共有」機能が有効になっていないか
以前のExcelにあった「ブックの共有」(共有ブック)が有効なファイルでは、使えない機能があります。タイトルバーに「共有」と表示される場合は、この機能が有効になっている可能性があります。
解除すると他の人の編集に影響するため、ファイルの管理者に確認してから解除してください。なお、OneDriveやSharePoint上での共同編集は、これとは別の機能です。
7. アウトライン(グループ化)や小計が設定されていないか
行がグループ化されている範囲や、「小計」機能で集計行が入っている範囲では、重複の削除がうまく実行できないことがあります。「データ」タブの「小計」で「すべて削除」を選ぶか、グループを解除してから実行してください。
小計の行が残ったままだと、集計行まで判定の対象に含まれてしまいます。
実行できるのに重複が消えないときの確認順
1. 判定する列と見出しの設定を確認する
「重複の削除」の画面では、チェックを入れた列の値がすべて一致する行だけが重複とみなされます。連番・入力日時・更新者のように、行ごとに必ず違う値が入る列にチェックが入っていると、重複は1件も見つかりません。
「先頭行をデータの見出しとして使用する」のチェックも確認してください。見出しがあるのにチェックが外れていると、見出しの行もデータとして扱われます。
2. 表の一部だけを選んでいないか
1列だけを選んで実行すると、選択範囲を広げるか、今の選択範囲のまま続けるかを確認する画面が出ます。選択肢は「選択範囲を拡張する」「現在の選択範囲で続ける」といった表記です。
今の選択範囲のまま続けると、その列のセルだけが削除されて上に詰められ、ほかの列との対応がずれます。行ごと重複を消したいときは、表全体を選ぶか、選択範囲を拡張する方を選んでください。
3. 同じに見える2つのセルが本当に同じか調べる
ここからは、セルの値そのものを確認します。同じに見えるのに消えない2行を見つけ、空いている列に次の式を入れて比べます。A2とA3を比べる場合の例です。
| 式 | 分かること |
|---|---|
=A2=A3 |
FALSEなら、Excelは別の値とみなしている |
=LEN(A2) と =LEN(A3) |
文字数が違えば、空白や見えない文字が入っている |
=ISTEXT(A2) と =ISTEXT(A3) |
片方だけTRUEなら、数値と文字列が混ざっている |
=UNICODE(RIGHT(A2)) |
末尾の文字の文字コードが分かり、見えない文字を特定できる |
=A2=A3 がFALSEになったら、次の表で原因を絞り込みます。
| 原因 | よくある例 | 見分け方 |
|---|---|---|
| 前後の空白 | 「山田商事」と「山田商事 」 | 片方のLENが多い。=LEN(TRIM(A2)) と比べると差が分かる |
| 全角・半角の違い | 「ABC-01」と「ABC-01」、半角スペースと全角スペース | LENが同じでも =A2=A3 はFALSEで、=ASC(A2)=ASC(A3) はTRUEになる |
| 数値と文字列 | 数値の123と、文字列の「123」 | 片方だけ左寄せになっていたり、緑の三角が出ていたりする。ISTEXTの結果も違う |
| 見えない文字 | Webや別のシステムからコピーした改行・タブ・特殊な空白 | 空白が見えないのにLENが多い。UNICODEで10(改行)、9(タブ)、160(ノーブレークスペース)、8203(ゼロ幅スペース)などが出る |
| 表示されていない桁 | 「1,000」と表示された1000と1000.4、日付だけが表示された日時 | セルを選ぶと数式バーの値が違う。小数点以下の表示桁を増やすか、表示形式を「標準」にすると差が見える |
4. 比較用の列を作ってから重複を削除する
原因が分かったら、比較用の列を作るのが安全です。元の値はそのまま残し、そろえた値を比較用の列に作って、その列で重複を判定します。
A列の値を比較用にそろえる式の例:
=TRIM(ASC(SUBSTITUTE(SUBSTITUTE(CLEAN(A2),UNICHAR(160)," "),UNICHAR(8203),"")))
| 関数 | 役割 |
|---|---|
| CLEAN | 改行やタブなどの制御文字を取り除く |
| SUBSTITUTE(UNICHAR(160)) | ノーブレークスペースを、通常の半角スペースに置き換える |
| SUBSTITUTE(UNICHAR(8203)) | ゼロ幅スペースを取り除く |
| ASC | 全角の英数字・記号・スペース・カタカナを半角にする |
| TRIM | 前後の空白を取り除き、文字の間で続く空白を1つにまとめる |
この式の結果は文字列になるので、数値の123と文字列の「123」も、同じ「123」として比べられます。
なお、ASCはカタカナも半角にします。比較用の列は判定のためだけに使い、元の列は書き換えないでください。
日時や小数の違いが原因なら、比較用の列は =INT(A2)(日付だけにする)や =ROUND(A2,0)(指定した桁で丸める)にします。どの桁までを同じ値とみなすかは、データの使い方に合わせて決めてください。
作業の手順は次のとおりです。
- 作業前に、シートをコピーしておく
- 表の右端に比較用の列を追加し、式を最終行までコピーする
- 比較用の列をコピーし、同じ場所に「値」として貼り付ける(判定に使う値を固定するため)
- 「重複の削除」を開き、元の列の代わりに比較用の列にチェックを入れて実行する
- 削除された件数と残った行を確かめ、比較用の列を削除する
この方法でそろうのは、空白・全角半角・見えない文字といった「入力の揺れ」だけです。「株式会社」と「(株)」の違いや、略称・旧社名などの表記の違いはそろいません。
5. それでも原因が分からないとき
- 並べ替えて隣に並べる:判定に使う列で並べ替えると、同じはずの値が隣り合うため、上の式で比べやすくなります
- フィルターの一覧を見る:オートフィルターの一覧に同じ文字が2つ並んでいたら、その2つはどこかが違っています。片方ずつ絞り込み、該当する行を上の式で調べてください
