名簿の全角スペースと半角スペースが混在するときの一括削除【LibreOfficeで計算して確認】
名簿の氏名や会社名に、「山田 太郎」「山田 太郎」「 山田太郎 」のように、半角と全角のスペースが混じっていると、検索や重複チェックが合わなくなります。この記事では、スペースを取り除く式とそろえる式を、実際に計算して確かめた結果だけで紹介します。
出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/space_remove.py)。外部サイトの説明は参照していません。Excelでは未確認です。本番のデータに使う前に、数行で結果を確かめてください。
先に結論
TRIMは半角スペースだけを整理します。全角スペースは消えません(今回の計算で確認)。- 半角・全角の両方をすべて消すなら、
SUBSTITUTEを2回重ねます。 - スペースを1つ残して全角・半角をそろえるなら、全角を半角に置き換えてから
TRIMをかけます。
4つの式と、実際の計算結果
A2に元の文字列が入っているとして、B〜E列に次の式を入れて比べました。
| 列 | 式 | 役割 |
|---|---|---|
| B | =TRIM(A2) |
前後の半角スペースを消し、途中の連続した半角スペースを1つにする |
| C | =SUBSTITUTE(A2," ","") |
半角スペースをすべて消す |
| D | =SUBSTITUTE(SUBSTITUTE(A2," ","")," ","") |
半角・全角スペースをすべて消す |
| E | =TRIM(SUBSTITUTE(A2," "," ")) |
全角を半角にしてからTRIM(スペース1つにそろえる) |
(Dの式の2つ目の引数は全角スペース1文字です。コピーするとき、全角スペースが半角に変わらないよう注意してください。)
| 入力 | B(TRIM) | C(半角削除) | D(両方削除) | E(1つにそろえる) |
|---|---|---|---|---|
| 山田 太郎(半角) | 山田 太郎 | 山田太郎 | 山田太郎 | 山田 太郎 |
| 山田 太郎(全角) | 山田 太郎(変わらず) | 山田 太郎(変わらず) | 山田太郎 | 山田 太郎 |
| (前後に半角2つ)山田太郎 | 山田太郎 | 山田太郎 | 山田太郎 | 山田太郎 |
| 山田(半角3つ)太郎 | 山田 太郎 | 山田太郎 | 山田太郎 | 山田 太郎 |
| (前後に全角)山田(全角)太郎(全角) | 変わらず | 変わらず | 山田太郎 | 山田 太郎 |
| 山田(半角+全角)太郎 | 変わらず | 山田(全角)太郎 | 山田太郎 | 山田 太郎 |
| 株式会社 サンプル(全角)商事 | 変わらず | 株式会社サンプル(全角)商事 | 株式会社サンプル商事 | 株式会社 サンプル 商事 |
| (空欄) | (空) | (空) | (空) | (空) |
表のとおり、全角スペースが入った行ではBとCは役に立たず、DかEが必要です。
どれを使うか
- 氏名を「山田太郎」のように詰めたい → D
- 「山田 太郎」のようにスペース1つで読みやすくそろえたい → E
- 会社名の「株式会社 サンプル」のように、語の区切りを残したい → E
名寄せ(同じ人・会社を探す)では、比較用の列にDを使い、表示用の列にEを使う、というように分けると安全です。
注意点: どの種類のスペースか見分ける
見た目では全角と半角の区別がつきにくいので、次の式で確かめられます。
=UNICODE(MID(A2,3,1))→ 3文字目が全角スペースなら12288、半角スペースなら32(今回、「山田 太郎」で12288、「山田 太郎」で32と確認)。Excelでは2013以降の関数です。=LEN(A2)-LEN(SUBSTITUTE(A2," ",""))→ 全角スペースの個数(今回、「山田 太郎」で1と確認)。
注意点: 式の結果は「値」で残す
式の結果を残したいときは、結果の列をコピーして「値として貼り付け」をしてから、元の列を削除します。元の列を上書きするとやり直せないので、列を分けて作業するのが安全です。
名簿全体を整えるなら
スペースのほかに、「株式会社」の位置、(株)・㈱の表記、電話番号のハイフンなど、名簿には直したい表記ゆれが重なりがちです。運営者が作った「名簿クレンジングシート」は、そうした整形をまとめて行うExcelのシートです。まず試したい方向けに、50行までの無料お試し版があります。この記事の方法で足りる場合は、使う必要はありません。
関連: 全角・半角変換ツール(ブラウザ内で処理) / 電話番号のハイフンを一括で削除する方法
まとめ
TRIMは半角スペースのみ。全角は残る- 両方消すなら
SUBSTITUTEを2回、1つにそろえるなら「全角→半角→TRIM」 - スペースの種類は
UNICODEで見分ける(12288=全角、32=半角) - 元の列は残して、別の列で作業する
式はいずれもLibreOfficeで計算した結果です。Excelでは未確認のため、本番のデータに使う前に数行で試してください。
参考にした情報
- 出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/space_remove.py)