shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【Excel】数字と文字列が混在するデータから数字以外を消す方法

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]","")

参考: REGEXREPLACE 関数 - Microsoft サポート

なお、全角数字も含む文字列で、抽出結果をすべて半角数字にしたい場合はASC関数も組み合わせて次のように記載します。

=ASC(REGEXREPLACE(対象セル,"[^\d]",""))
 ASC関数で半角に変換します。

確認したExcelのバージョンでは、"[\d]"で全角数字も含んでいましたが、一般的には半角の数字だと思うので、念のため、次のようにした方がよいかもしれません。

=ASC(REGEXREPLACE(対象セル,"[^\d0-9]",""))

REGEXREPLACE関数による変換結果の例

いくつかの文字列、正規表現のパターンでの計算例は次のとおりです。B列の値をD列のように変換しています。下図で赤字の数字は全角数字です。

括弧つきや、ハイフンありの電話番号リストから数字のみを抽出できています

REGEXREPLACE関数での変換例
数式の補足説明

Excelの正規表現で、

  • [^\d]は、半角全角含めた数字以外
  • [^0-9]は、半角数字以外

という意味です。数字以外を空欄(””)に置換し、削除しています。
上図では、数式の理解用で、一部は黒丸(●)に置換しています。、削除しています。
なお、半角全角含めた数字以外とする場合は、"[^\d0-9]"とした方が良いかもしれません。

この関数のすべての正規表現、および REGEXTEST と REGEXEXTRACTでは、正規表現の PCRE2 'flavor' が使用されます。

REGEXREPLACE 関数 - Microsoft サポート

REGEXREPLACE関数がない場合の対応例

PowerQueryを用いた方法です。

shikumika.org

ユーザー定義関数を作成する方法です。

shikumika.org

以上、Excelで数字と文字列が混在するデータから数字以外を消す方法でした。