2.1. XLCRegEx 関数一覧
注意
処理の対象となる文字列をセル参照で指定する場合、そのセルには文字列が入っていなければなりません。そうでないとエラー値
#VALUE! を返します。セルに数値等が入っている場合の対処法はこのページの下にある「
数値との変換」を見てください。対象文字列を式で指定する場合も、実際に文字列を渡しているかを確認してください。
テキストを処理するための関数
XLCRegExMatch(パターン, 対象文字列, オプション)
- 対象文字列がマッチしているなら TRUE、マッチしないなら FALSE を返します。
- オプションは省略可能です。(以下の関数でも同様。)
XLCRegExFormat(パターン, 置換文字列, 対象文字列, オプション)
- 対象文字列内にマッチしている部分があるなら、置換文字列を出力します。置換文字列に書式指定があれば、それに従って整形します。
- マッチしている部分がないなら空文字列を出力します。
XLCRegExFormatIf(パターン, 置換文字列1, 置換文字列2, 対象文字列, オプション)
- 対象文字列内にマッチしている部分があるなら、置換文字列1を出力します。置換文字列1に書式指定があれば、それに従って整形します。
- マッチしている部分がないなら、置換文字列2を出力します。置換文字列2 では対象の文字列全体を示す $_ だけが有効です。それ以外の指定は空文字列で置き換えられます。
XLCRegExReplace(パターン, 置換文字列, 対象文字列, オプション)
- 対象文字列内にマッチしている部分があるなら、置換文字列で置き換えます。置換文字列に書式指定があれば、それに従って整形した文字列で置き換えます。
XLCRegExValue(パターン, 置換文字列, 対象文字列, オプション, 代替値)
- 対象文字列内にマッチしている部分があるなら、置換文字列にしたがって処理して得られた文字列を数値に変換します。
- 対象文字列から直接数値を取り出すのではなく、処理して得られた文字列を数値に変換します。
- 不適切な文字が現れた時点で処理を中止し、その時点までに得られた値を出力します。
- 指数形式(2E3、0.1e-2 など)も数値に変換します。
- 最初に通貨記号がある場合、中止するのではなくそれを読み飛ばして処理を続けます。ただし、その通貨記号はコントロールパネルの「地域と言語」で指定された地域のものに限ります。
- 最後の数字の直後に % がある場合は、得られた値を 1/100 にします。
- 倍精度浮動小数点数(64 ビット)で計算します。
- 得られた値の絶対値が大きすぎる場合("1e309" など)は、エラー値 #NUM! を出力します。
- 得られた値の絶対値が小さすぎる場合("1e-308" など)は、0 や -0 が表示されます。ただし、実際の値は 0 ではないことがありますので、計算に使用する場合は注意してください。
- マッチしなかった場合や数値に変換できなかった場合は、代替値をそのまま出力します。
- 代替値には数値または文字列を指定することができます。
- 代替値を省略すると、マッチしない場合や数値に変換できない場合は空値を出力しますが、Excel はこの値を状況に応じて 0、FALSE または空文字列に変換して使用します。
- オプションと代替値は省略可能です。
使用例
組み込みの関数と同様に、結果を出力したいセルに記述してください。引数のパターン、置換文字列、オプションについては該当するページを参照してください。
- セル A2 に A から E に 1 個か 2 個の数字を続けた文字列が入っているなら TRUE を出力する。
=XLCRegExMatch("^[A-E]\d{1,2}$",A2)
- セル A6 に H に数字を続けたものが入っているなら、数字を「平成」と「年」で囲んだ形式に変更して出力する。(大文字小文字、全角半角は区別しない。)
=XLCRegExFormat("^H(\d+)$","平成$1年",A6,"iw")
さらに、当てはまらない場合は「未入力」と出力する。
=XLCRegExFormatIf("^H(\d+)$","平成$1年","未入力",A6,"iw")
- セル A8 内の文字列の , の後の空白を 1 個にそろえた文字列を出力する。
=XLCRegExReplace(", *",", ",A8,"g")
- セル A3 に A から E に 1 個か 2 個の数字を続けた文字列が入っているなら、その数字の部分を数値として出力する。当てはまらない場合は -1 を出力する。
=XLCRegExValue("^[A-E](\d{1,2})$","$1",A3,,-1)
使用上の注意
以上の関数において引数は、記述がなければすべて文字列で指定します。組み込み関数の文字列引数と同様に、
- " で囲んで直接記述する
- 他のセルを参照する
- 文字列を出力する関数を指定する
- それらを & で組み合わせる
のいずれの方法でも指定できます。
パターンと置換文字列は、後述の XLCRegExCreate 関数、XLCRegExCreateReplacement 関数で登録したときに割り当てた番号で指定することも可能です。
オプションは省略できます。
q オプションを指定すると、先頭と終端に二重引用符があればそれらをはずして処理を行います。セル参照で指定する場合、内容によっては文字列ではなく数値や式とみなされる場合があります。このような場合に利用してください。
これらの関数はスレッドセーフとして登録されます。
数値との変換
これらの関数は文字列を処理します。(空セルを指定した場合は、空文字列として処理します。)数値等を対象文字列に指定するとエラー値 #VALUE! が表示されます。数値を処理するには文字列に変換しなければなりません。それには以下のような方法があります。
- TEXT ワークシート関数を利用すると、数値を書式を指定して文字列に変換することができます。この関数の出力を引数として使用することができます。例えば、セル H2 に格納されている数値の小数部分だけを文字列として取り出すには次のようにします。
=XLCRegExFormat("\.(\d+)","小数部分: $1",TEXT(H2,"0.000"))
なお、上の例では、小数部分は 3 桁に四捨五入されます。
- 文字列連結演算子 & を数値に適用すると、数値を文字列に変換して処理します。これを利用すると上の例は次のようになります。
=XLCRegExFormat("\.(\d+)","小数部分: $1",H2&"")
なお、小数部分の桁数は Excel が自動的に決めたもののままです。
XLCRegExValue 関数と VALUE 関数など
出力された文字列を数値に変換する方法には以下のものがあります。
- VALUE ワークシート関数を利用すると、文字列を数値に変換することができます。
=VALUE(XLCRegExFormat("\d+(\.\d*)?","$&",B2,"w"))
- 計算式に使用すると数値に変換されます。
=XLCRegExFormat("\d+(\.\d*)?","$&",B2,"w")+0
どちらの方法も、数値を表す文字がない場合、不適切な文字が含まれている場合は次のように対処しています。
- 空値の場合は 0 を返す。
- それ以外の場合(空文字列も含む)は、エラー値 #VALUE! を返す。
入力が不適切な場合は空値にしておきたいなど、上記以外の対処法が必要な場合に XLCRegExValue 関数を使用してください。
正規表現を一時的に登録するための関数
XLCRegExCreate(割り当てる番号, パターン, オプション)
- パターンとオプションから正規表現パーサを作成し番号を付けて保存します。
XLCRegExDelete(削除する正規表現パーサの番号)
XLCRegExClear(論理値)
- TRUE の場合は保存しているすべての正規表現パーサを削除します。FALSE の場合はアクティブシートで登録した正規表現パーサをすべて削除します。
以上の関数により、正規表現を一時的に番号を割り当てて登録・削除することができます。
使用上の注意
登録した正規表現はシートを閉じると破棄されます。再度オープンしたときに利用したければ、関数を呼んで登録し直す必要があります。
内部では、割り当てる番号とシート ID を組み合わせて処理しますので、シートが異なれば番号が同じでも別のものとして扱われます。現在、他のシートで登録された正規表現を呼び出すことはできません。
置換文字列を一時的に登録するための関数
置換文字列についても以下の関数により登録を行うことができます。正規表現のものと同様に使用してください。
XLCRegExCreateReplacement(割り当てる番号, 置換文字列, オプション)
XLCRegExDeleteReplacement(削除する置換文字列の番号)
XLCRegExClearReplacement(論理値)
- TRUE の場合は保存しているすべての置換文字列を削除します。FALSE の場合はアクティブシートで登録した置換文字列をすべて削除します。
その他の関数
正規表現中に文法エラーがある場合などには #VALUE! などの Excel のエラー値を返しますが、内部ではエラーメッセージを記録しています(現バージョンでは 8 個まで)。これを表示するために次の関数を用意しています。
XLCRegExError(整数値)
XLCRegExError()
- 指定された数値だけ前のエラーメッセージを表示します。
- 何も指定しない場合は一番新しいエラーメッセージを表示します。
© 2012 gra_umi(gra_umi@yahoo.co.jp) All rights reserved.