サクラエディタで重複行を消すときは、先に並べ替えて、同じ行を隣り合わせにしてから、隣り合った同じ行を1行にまとめるのが基本です。サクラエディタで重複削除に使う機能は「マージ」です。これは隣り合った同じ行だけをまとめるため、ファイル内の離れた場所にある同じ行は、並べ替えないと残ります。
もう一つ大事なのが範囲の選び方です。見出し行まで選んで並べ替えると、見出しがデータの途中に紛れ込みます。逆に選択範囲が足りないと、最後の数行が処理されません。この記事では、範囲の選び方と、削除前後の行数の確かめ方を含めて手順を説明します。
作業の流れ
- 元ファイルのコピーを作る
- 削除前の行数を控える
- 見出し行を除いて、データ部分だけを選ぶ
- 選んだ範囲を並べ替える
- 同じ範囲を選び直して、マージで重複行をまとめる
- 削除後の行数を確かめ、削除した件数が妥当か見る
なぜ並べ替えが先なのか
マージは、選択範囲の中で上下に続いている同じ行を1行にまとめます。並べ替えずに実行すると、次のようになります。
| 元の並び | 並べ替えずにマージ | 並べ替えてからマージ |
|---|---|---|
| りんご | りんご | みかん |
| みかん | みかん | りんご |
| りんご | りんご |
並べ替えずに実行した場合、「りんご」の2行は間に「みかん」があって隣り合っていないため、両方残ります。並べ替えると同じ行が隣り合うので、1行にまとまります。
ただし並べ替えると、元の行の順番は失われます。登録順や時系列など、元の並び順に意味があるファイルでは、この方法を使う前に順番を残す必要がないか確かめてください。
手順1:作業前にコピーと行数を控える
まず、元ファイルをコピーしてからコピーの方を開きます。保存する前ならCtrl+Zで元に戻せますが、上書き保存して閉じると戻せません。
次に、削除前の行数を控えます。
- Ctrl+Endでファイルの最後に移動し、ステータスバーに出る行番号を見る
- ファイルの最後が改行で終わっていると、カーソルはデータ最終行の次の空行に移ります。行番号がデータ行より1多く出ていないか、画面で確かめる
- 見出し行がある場合は「全体の行数」と「見出しを除いたデータ行数」を分けて記録する
例:全体1,201行、見出し1行、データ1,200行
手順2:見出し行を除いて範囲を選ぶ
見出し行がある場合は、2行目からを選びます。
- 2行目の行頭をクリックしてカーソルを置く
- Ctrl+Shift+Endを押して、ファイルの最後まで選ぶ
- 選択範囲の始まりが2行目の行頭になっているか、終わりがデータ最終行まで含んでいるかを確認する
途中だけを処理したい場合は、範囲の始まりを行頭、終わりを最後の行の末尾にそろえます。行の途中から選択すると、その行がどう扱われるか分かりにくくなります。
見出し行がないファイルなら、Ctrl+Aで全体を選んでかまいません。
手順3:並べ替えてからマージする
サクラエディタでは、並べ替え(昇順・降順)とマージは、標準の設定では「ツール」メニューにあります。メニューの表記や位置は版や設定で変わることがあるため、見つからない場合はヘルプや共通設定のキー割り当て一覧で、機能の名前を探してください。
- データ部分を選んだまま、昇順(または降順)で並べ替える
- 並べ替えた後、選択が外れていたら手順2と同じ方法で選び直す
- マージを実行する
- 先頭行に見出しが残っていて、データの途中に見出しが紛れ込んでいないことを確かめる
手順4:削除後の行数を確かめる
手順1と同じ方法で、もう一度行数を確かめます。
| 項目 | 例 |
|---|---|
| 削除前のデータ行数 | 1,200 |
| 削除後のデータ行数 | 1,130 |
| 削除された行数 | 70 |
削除された行数が多すぎる・少なすぎると感じたら、次の点を確かめます。
- もう一度マージしても行数が変わらないか:同じ範囲を選んで再びマージし、行数が減らなければ、隣り合った重複は残っていません
- 重複していると分かっている値を検索する:Ctrl+Fでその値を検索し、1件だけ見つかるかを見る
- 空行が残っていないか:空行同士も同じ行として1行にまとまります。空行が1行残ったときは、残してよいかを判断する
同じに見えて消えない行の原因
マージは行全体を文字単位で比べるため、1文字でも違うと別の行として残ります。
| 原因 | 例 |
|---|---|
| 行末のスペースやタブ | 「りんご」と「りんご 」 |
| 全角と半角 | 「ABC」と「ABC」 |
| スペースとタブの違い | 区切りが半角スペースとタブで混在 |
| 大文字と小文字 | 「Apple」と「apple」 |
| 最後の行の改行の有無 | ファイルの最後の行だけ、改行がないため別の行として残る |
スペースやタブは、空白記号を表示する設定にすると見分けやすくなります。設定の場所はタイプ別設定などにあるので、使っている版の画面で確認してください。大文字・小文字を区別するかどうかも、数行の小さなテストファイルで一度確かめておくと安心です。
「株式会社」と「(株)」のような表記ゆれは、文字が違うのでこの方法ではまとまりません。表記ゆれを名寄せする作業は別に行ってください。
CSVで使うときの注意
サクラエディタのマージは行全体が完全に一致するかだけを見ます。CSVで使うときは次の点に気をつけてください。
- 特定の列だけで重複を判定することはできない:「顧客IDが同じなら重複」のように、列を基準に消したい場合は、表計算ソフトなど列を扱える方法を使う
- セル内改行を含むCSVには向かない:1件のデータが複数行に分かれているため、並べ替えると1件分の行がばらばらになる。作業前にダブルクォートで囲まれた中に改行がないか確かめる
- 見出し行は必ず選択範囲から外す:見出しが途中に紛れ込むと、他のソフトで取り込むときに見出しと同じ内容の行がデータとして入ってしまう
作業後のチェックリスト
- 元ファイルのコピーが残っている
- 先頭行が見出しのままで、データの途中に見出しが紛れ込んでいない
- 削除前後の行数と削除件数を記録した
- 再びマージしても行数が変わらない
- 重複していると分かっている値が1件だけになっている
- 並び順が変わっても困らないファイルである
