VBScriptなしでExcelで正規表現を実行できますか?


22

別のセルの内容の正規表現検索を行うためにセルに配置できるExcel関数を探しています。これを行うために利用可能なものはありますか?ソリューションをより速くハードコーディングできるため、このためにスプレッドシートにVBスクリプトを追加する必要はありません。最速の解決策は関数であることだけです。しかし、見つけることができません。だから多分何もない。

知ってる?

回答:


12

VBEで「Microsoft VBScript Regular Expressions 5.5」への参照を追加するだけで、VBScript.dll正規表現関数をExcelに公開できます。単純な正規表現関数を書くのは簡単です、例えば

Public Function emailCheck(rawEmail As String) As Boolean
    Dim reg As New RegExp
    reg.Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,4}$"
    emailCheck = False
    If reg.Test(rawEmail) Then
        emailCheck = True
    End If
End Function

参照を追加する方法を説明できますか?
クリスウォルシュ


3

MoreFunc.xllは、正規表現機能を備えた無料のアドインです。

Regexを実行できる他のサードパーティアドインもいくつかあります。

それを行うための真のネイティブワークシート関数はありませんが、実行する特定の検索がある場合は、おそらく他の関数を使用してジョブを実行できます。


確認していただきありがとうございます。そのライブラリを見つけましたが、ライブラリを配布する必要のないものが欲しいと思っていました。
エリックロバートソン

@Erick、うん、スプレッドシートにアドインを追加するのは嫌いだ。完全な正規表現の柔軟性が必要でない限り、おそらく他の機能を使用して作業を完了できます。Excelには多くのトリックがあります。ここに特定のリクエストを投稿してください。
ランスロバーツ

2

特定のセル内で一致する正規表現の数を与える関数は次のとおりです。

Public Function regexCount(regex As String, ref As Range) As Integer
    Dim reg As New RegExp
    reg.Global = True
    reg.Pattern = regex
    regexCount = reg.Execute(ref.Value).Count
End Function

(「Microsoft VBScript Regular Expressions 5.5」への参照を追加する必要があります-VBAエディターから「ツール」->「参照」に移動し、その参照のチェックボックスをオンにします。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.