Excelで1つのセルに「社員番号+空白+氏名」が入力されており、社員番号だけを削除して氏名を残したい場合があります。例えば「24N12345 山田太郎」というデータが100行並んでいるようなケースです。
このとき置換で「24N*」を指定すると、氏名まで消えてしまうことがあります。これはExcelの置換で使う「*」が、文字数を限定せず、その後に続く文字列までまとめて一致させるワイルドカードだからです。
社員番号が必ず8文字で「24N」から始まるのであれば、置換では「24N????? 」を検索して空欄に置き換える方法が簡単です。また、社員番号と氏名の間に必ず空白があるなら、TEXTAFTER関数などを使って氏名だけを別セルへ取り出す方法も安全です。ここでは100行をまとめて処理する複数の方法を解説します。
- なぜ「24N*」で置換すると氏名まで消えるのか
- 一番簡単な方法:置換で「24N????? 」を削除する
- 「?」を5個使う理由
- 社員番号の先頭が24N以外にもあるなら「???????? 」でも処理できる
- 置換する前に必ず範囲を選択する
- Microsoft 365などならTEXTAFTER関数が簡単
- TEXTAFTERなら社員番号の文字数を気にしなくてよい
- 古いExcelならRIGHT・LEN・FIND関数でも氏名だけ取り出せる
- 社員番号が必ず8文字ならMID関数でも簡単
- TRIM関数を加えると余分な空白にも対応しやすい
- 100行なら数式を一度入力して下までコピーすればよい
- 数式方式は元データを壊さず確認できるのがメリット
- 半角スペースと全角スペースの違いに注意
- どの方法を使うのがおすすめ?
- まとめ:8桁固定なら「*」ではなく「?」を使う
なぜ「24N*」で置換すると氏名まで消えるのか
Excelの検索と置換では、「*」と「?」をワイルドカードとして使用できます。ただし、この2つは意味が異なります。
| 記号 | 意味 | 例 |
|---|---|---|
| * | 0文字以上の任意の文字列 | 24N* は24Nから後ろを広く一致させる |
| ? | 任意の1文字 | 24N????? は24N+5文字だけに一致する |
例えばセルに「24N12345 山田太郎」と入力されている場合、「24N*」を検索すると、24Nから始まり、その後に続く「12345 山田太郎」まで「*」の対象になり得ます。そのため置換後を空欄にすると、氏名まで一緒に削除されてしまいます。
一方、「?」は必ず1文字だけに一致します。社員番号が「24N」+5文字の合計8文字と決まっているなら、「24N?????」を使うことで社員番号部分だけを狙えます。
一番簡単な方法:置換で「24N????? 」を削除する
社員番号が必ず8文字で、形式が「24N12345」のように「24N+5文字」になっており、その直後に半角スペースが1つ入っているなら、置換が最も手軽です。
検索する文字列には「24N????? 」と入力します。最後の「?」の後には、氏名との間に入っている半角スペースも1つ入力してください。置換後の文字列は何も入力せず空欄にします。
- 対象となる100行のセル範囲を選択する
- Ctrl+Hキーを押して「検索と置換」を開く
- 「検索する文字列」に「24N????? 」と入力する
- 「置換後の文字列」は空欄のままにする
- 最初に「次を検索」で一致内容を確認する
- 問題なければ「すべて置換」を実行する
例えば「24N12345 山田太郎」は「山田太郎」、「24N54321 佐藤花子」は「佐藤花子」になります。
「?」を5個使う理由
社員番号が8文字で、先頭3文字が「24N」と決まっているなら、残りは5文字です。そのため「24N」の後ろに「?」を5個配置します。
つまり、検索条件は次の構造になります。
24N + ? + ? + ? + ? + ? + 半角スペース
例えば「24NABCDE 山田太郎」のように後半5文字に数字以外の文字が含まれていても、「?」は任意の1文字なので一致します。数字だけに限定する必要がない点も便利です。
社員番号の先頭が24N以外にもあるなら「???????? 」でも処理できる
社員番号が必ず8文字であるものの、「24N」だけでなく「25N」「23A」など複数の形式がある場合は、先頭を固定せず8文字すべてを「?」で表す方法もあります。
検索する文字列を「???????? 」、置換後を空欄にすれば、「先頭8文字+その直後の空白」を削除できます。
例えば「24N12345 山田太郎」も「25N98765 鈴木一郎」も、氏名部分だけを残せます。ただし、対象セルの先頭8文字が必ず社員番号であることが前提です。
置換する前に必ず範囲を選択する
100行だけを処理したい場合は、置換画面を開く前に対象となるセル範囲を選択しておくことをおすすめします。
例えばA2からA101までが社員データなら、A2:A101を選択してからCtrl+Hを押します。これにより、他の場所に似た文字列が存在していても誤って削除するリスクを減らせます。
さらに最初から「すべて置換」を押すのではなく、「次を検索」で2~3件確認してから実行すると安全です。元データを書き換える処理なので、可能ならシートまたはブックのコピーを取ってから作業すると安心です。
Microsoft 365などならTEXTAFTER関数が簡単
元データを直接削除せず、別の列に氏名だけを取り出したい場合は関数を使う方法があります。新しいExcelでTEXTAFTER関数を利用できる場合は非常に簡単です。
A2セルに「24N12345 山田太郎」と入っているなら、B2に次の式を入力します。
=TEXTAFTER(A2,” “)
これは「最初の半角スペースより後ろの文字を返す」という意味です。そのためB2には「山田太郎」だけが表示されます。
TEXTAFTERなら社員番号の文字数を気にしなくてよい
TEXTAFTER関数の利点は、社員番号が8文字かどうかではなく、「社員番号と氏名が空白で区切られている」という構造を利用できる点です。
例えば「24N12345 山田太郎」だけでなく、「ABC123 鈴木一郎」のように社員番号の長さが違っても、最初の空白より後ろが氏名なら同じ式で取り出せます。
ただし氏名の前に余分な空白が複数入っているデータや、全角スペースが混在しているデータでは追加処理が必要になる場合があります。
古いExcelならRIGHT・LEN・FIND関数でも氏名だけ取り出せる
TEXTAFTER関数を利用できないExcelでは、RIGHT、LEN、FINDを組み合わせれば同じ処理ができます。
A2が「24N12345 山田太郎」であれば、次の式を使用できます。
=RIGHT(A2,LEN(A2)-FIND(” “,A2))
FIND関数で最初の半角スペースの位置を見つけ、その後ろにある文字数だけRIGHT関数で取り出します。結果は「山田太郎」になります。
社員番号が必ず8文字ならMID関数でも簡単
社員番号の長さが必ず8文字で、9文字目が空白、10文字目から氏名という形式が完全に統一されているなら、MID関数を使う方法もあります。
A2に元データがある場合は、次の式です。
=MID(A2,10,LEN(A2))
「A2の10文字目から後ろを取り出す」という意味なので、「24N12345 山田太郎」から「山田太郎」だけを取得できます。
TRIM関数を加えると余分な空白にも対応しやすい
データによっては社員番号と氏名の間に半角スペースが2個入っていたり、氏名の前後に余計な空白が入っていたりすることがあります。
社員番号が必ず先頭8文字なら、次のようにTRIM関数を組み合わせると余分な半角スペースを除去しやすくなります。
=TRIM(MID(A2,9,LEN(A2)))
まず9文字目以降を取り出し、TRIMで先頭などの不要な半角スペースを整理します。「24N12345 山田太郎」のように空白が増えていても、「山田太郎」にできます。
100行なら数式を一度入力して下までコピーすればよい
A2:A101まで100人分のデータがあるなら、B2に関数を入力して100回手入力する必要はありません。
B2へ式を入力したら、セル右下のフィルハンドルをダブルクリックするか、B101までドラッグします。すると各行に自動的にA列を参照した式がコピーされます。
結果に問題がなければB2:B101をコピーし、A2:A101へ「値として貼り付け」することで、元の列を氏名だけのデータに置き換えることもできます。作業後、不要になったB列は削除できます。
数式方式は元データを壊さず確認できるのがメリット
置換は非常に速い反面、実行すると元のセル内容を直接変更します。100行のデータ形式が完全に同じか分からない場合は、最初に関数で別列へ氏名を抽出する方が安全です。
例えば99行は正常でも、1行だけ「24N12345山田太郎」のように空白がない場合があります。置換では見落とす可能性がありますが、別列に結果を出せば異常な行を目視で確認できます。
処理結果を確認した後に値として貼り付ければよいため、業務データでは関数方式の方が失敗を防ぎやすい場合があります。
半角スペースと全角スペースの違いに注意
日本語のExcelデータでは、社員番号と氏名の間が半角スペースではなく全角スペースになっていることがあります。見た目だけでは区別しにくいため注意が必要です。
TEXTAFTERで半角スペースを指定したのにエラーになる場合は、実際には全角スペース「 」が使われている可能性があります。その場合は区切り文字として全角スペースを指定します。
100行の中で半角・全角が混在している場合は、先に全角スペースを半角へ置換して形式を統一してから処理すると簡単です。
どの方法を使うのがおすすめ?
データの形式によって最適な方法は異なります。目安を整理すると次のようになります。
| データの状態 | おすすめ方法 |
|---|---|
| 必ず「24N+5文字+空白+氏名」 | 置換で「24N????? 」を空欄にする |
| 社員番号は必ず8文字だが先頭文字が違う | 置換で「???????? 」を空欄にする |
| 社員番号の長さが一定ではない | TEXTAFTERで空白より後ろを抽出 |
| 古いExcelでTEXTAFTERが使えない | RIGHT+LEN+FIND |
| 元データを直接変更したくない | 別列に関数で抽出 |
今回のように社員番号が「24N」で始まり合計8文字と確定しているなら、最も短時間で済むのは「24N????? 」を検索して空欄へ置換する方法です。
まとめ:8桁固定なら「*」ではなく「?」を使う
Excelで「24N12345 山田太郎」のようなデータから社員番号だけ削除したい場合、「24N*」で置換すると「*」が氏名まで含めて一致するため、氏名も消えてしまうことがあります。
社員番号が必ず「24N+5文字」の8文字なら、検索文字列を「24N????? 」として、置換後を空欄にする方法が簡単です。「?」は任意の1文字だけに一致するため、社員番号5文字分だけを正確に指定できます。最後に社員番号と氏名の間のスペースも検索条件へ含めれば、氏名の前に空白も残りません。
100行を処理するときは対象範囲だけを選択し、まず「次を検索」で正しく一致するか確認してから「すべて置換」を実行すると安全です。
元データを直接変更したくない場合は、Microsoft 365などの新しいExcelなら=TEXTAFTER(A2,” “)で氏名だけを別列へ取り出す方法も便利です。データ形式が完全に統一されているなら置換、形式にばらつきがある場合や安全性を重視するなら関数、という使い分けがおすすめです。


コメント