Excelの数式を利用して、電話番号リストからハイフン等の数字以外を削除したいなど、数字と文字列が混在するデータから数字以外を削除したいときはREGEXREPLACE関数が便利です。
REGEXREPLACE関数は新しい関数で、指定された正規表現に基づいて、文字列内の特定のパターンを別の文字列に置き換えることができる関数です。
なお、大量データの場合は、Excelの追加機能であるPower Queryも便利です。
内容:
動作確認のExcelは「Microsoft® Excel® for Microsoft 365 MSO」(バージョン2411)です。
アウトプットイメージと数式
次のように数字と文字列が混在するデータから、数字だけを抽出します。
数字以外に、「-」(全角ハイフン)、「-」(半角ハイフン)、全角半角の括弧などが混在しています。
012-345-6789
(012)345-6789
(012)345-6789(012)345-6789
この場合は、全て”0123456789”に変換したい。
このようなときは、REGEXREPLACE関数を利用して、次のように記載します。
=REGEXREPLACE(対象セル,"[^\d]","")
なお、全角数字も含む文字列で、抽出結果をすべて半角数字にしたい場合はASC関数も組み合わせて次のように記載します。
=ASC(REGEXREPLACE(対象セル,"[^\d]",""))
ASC関数で半角に変換します。
確認したExcelのバージョンでは、"[\d]"で全角数字も含んでいましたが、一般的には半角の数字だと思うので、念のため、次のようにした方がよいかもしれません。
=ASC(REGEXREPLACE(対象セル,"[^\d0-9]",""))
REGEXREPLACE関数による変換結果の例
いくつかの文字列、正規表現のパターンでの計算例は次のとおりです。B列の値をD列のように変換しています。下図で赤字の数字は全角数字です。
数式の補足説明
Excelの正規表現で、
- [^\d]は、半角全角含めた数字以外
- [^0-9]は、半角数字以外
という意味です。数字以外を空欄(””)に置換し、削除しています。
上図では、数式の理解用で、一部は黒丸(●)に置換しています。、削除しています。
なお、半角全角含めた数字以外とする場合は、"[^\d0-9]"とした方が良いかもしれません。
この関数のすべての正規表現、および REGEXTEST と REGEXEXTRACTでは、正規表現の PCRE2 'flavor' が使用されます。
REGEXREPLACE関数がない場合の対応例
PowerQueryを用いた方法です。
ユーザー定義関数を作成する方法です。
以上、Excelで数字と文字列が混在するデータから数字以外を消す方法でした。