5. 使用例

注意


郵便番号、住所、電話番号を取り出す

ワークシート上に次のようなデータがあるとします。


A
1広島市役所 〒730-8586 広島市中区国泰寺町一丁目6番34号 代表電話 082-245-2111
2呉市役所 〒737-8501 広島県呉市中央4丁目1番6号 TEL:0823-25-3100(代表)
3尾道市役所 〒722-8501 広島県尾道市久保一丁目15-1 TEL:(0848)25-7111
4三次市役所 〒728-8501 広島県三次市十日市中二丁目8番1号
5廿日市市役所 〒738-8501 広島県廿日市市下平良一丁目11番1号 電話:0829-20-0001(代表)

郵便番号を取り出す

各データから郵便番号だけを取りだしたいとします。セル A1 のデータの場合は、郵便番号を表示させたいセルに次のように入力します。

=XLCRegExFormat("[\d\-]+","$&",A1)

このデータの場合、数字が最初に登場するのは郵便番号なのでこの方法が使えますが、最初に番号を振っている場合はそちらを取り出してしまいます。そのような場合でも正しく動作させるには「〒」を指定します。

=XLCRegExFormat("〒[\d\-]+","$&",A1,"w")

この方法を使うと「〒730-8586」などと表示されます。「〒」をつけたくないなら、番号の部分だけ ( ) で囲んで参照してください。

=XLCRegExFormat("〒([\d\-]+)","$1",A1,"w")

電話番号を形式を揃えて取り出す

固定電話の電話番号は総務省によると

国内プレフィックスの 0、市外局番(1 ~ 4 桁)、市内局番(1 ~ 4 桁)、加入者番号(4 桁)

となっています。これを実際に表す際には、ハイフンを使って 082-245-2111 とするか、0 と市外局番を ( ) で囲んで (0848)25-7111 とすることが多いようです。

上のデータから電話番号を取り出して、ハイフンを使って「XXX-XXX-XXXX」または「XXXX-XX-XXXX」の形式で表示したいとします。ただし、入力されていない場合は「未入力」と表示させるとします。これには、例えばセル A1 のデータの場合、電話番号を表示させたいセルに次の式を入力します。

=XLCRegExFormatIf("(?:電話|tel)\D*(\d{3,4})[)\-]([\d\-]+)","$1-$2","未入力",A1,"iw")

住所を区切って取り出す

「県名,市名,住所の残りの部分」という形式のデータを作成するには、整形したデータを出力したいセルに次のように入力します。(例として、元データはセル A1 のものを使用します。)

=XLCRegExFormat("〒[\d\-]+\s*(\w+県)?(\w{1,3}市)(\S+)","$1,$2,$3",A1)

漢数字をアラビア数字に変換したいときは XLCTr 関数を利用してください。

=XLCTr("一二","12",XLCRegExFormat("〒[\d\-]+\s*(\w+県)?(\w{1,3}市)(\S+)","$1,$2,$3",A1))

この例では一部の数字は全角で表記されています。これらを半角で揃えたい場合は、XLCNormalizeWidth 関数や XLCToHankaku 関数を利用してください。

=XLCNormalizeWidth(XLCRegExFormat("〒[\d\-]+\s*(\w+県)?(\w{1,3}市)(\S+)","$1,$2,$3",A1))
=XLCToHankaku(XLCRegExFormat("〒[\d\-]+\s*(\w+県)?(\w{1,3}市)(\S+)","$1,$2,$3",A1))

フィルタの検索条件に使用する

フィルタの検索条件にはワイルドカードを使用することができますが、XLCRegExMatch 関数を使用するとより柔軟な検索が行えます。

前節と同じデータを例とします。電話番号が入力されていないデータだけを表示したいとします。


A
1電話番号未入力
2
3
4元データ
5広島市役所 〒730-8586 広島市中区国泰寺町一丁目6番34号 代表電話 082-245-2111
6呉市役所 〒737-8501 広島県呉市中央4丁目1番6号 TEL:0823-25-3100(代表)
7尾道市役所 〒722-8501 広島県尾道市久保一丁目15-1 TEL:(0848)25-7111
8三次市役所 〒728-8501 広島県三次市十日市中二丁目8番1号
9廿日市市役所 〒738-8501 広島県廿日市市下平良一丁目11番1号 電話:0829-20-0001(代表)

セル A2 に次の検索条件式を入力します。

=NOT(XLCRegExMatch("(電話|tel)\D*(\d{3,4})[)\-]([\d\-]+)",A5,"iw"))

フィルタのオプションを設定するにはメニューもしくはリボンから以下の項目を選択します。

Excel 2003 以前データ → フィルタ → フィルタオプションの設定
Excel 2007 以降データ → 並べ替えとフィルタ : フィルタ : 詳細設定

「フィルタオプションの設定」ダイアログが表示されますので、以下のように設定します。

リスト範囲$A$4:$A$9
検索条件範囲$A$1:$A$2

他に必要なオプションがあれば適宜設定してください。0K ボタンを押すと電話番号のないデータだけが表示されます。