列Aにおいて、Iは 正規表現&VBA - 細胞をループは、隣接セルで一致値を返す
A0394
948B0129
Zkjs333
0a0401aような値を有していた場合
09ab28
と私は B(カスタム関数を使用せずに)正規表現とVBAを使用して2桁の数字が続く2アルファがあるマッチを返したかった
js33
ab28
何だろうコードのように見える?
列Aにおいて、Iは 正規表現&VBA - 細胞をループは、隣接セルで一致値を返す
A0394
948B0129
Zkjs333
0a0401aような値を有していた場合
09ab28
と私は B(カスタム関数を使用せずに)正規表現とVBAを使用して2桁の数字が続く2アルファがあるマッチを返したかった
js33
ab28
何だろうコードのように見える?
あなたはほとんどそれを持っていました。あなたはパターンの1つのオカレンスだけを検索しているので、最初のパターンはmatches(0)
となりますが、最初にmatches.count
を使って一致するものがあるかどうかを確認してください。
Sub Test()
Dim cel As Range, matches As Object
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[a-zA-Z]{2}[0-9]{2}"
For Each cel In Range("A1:A10")
Set matches = .Execute(cel.Value2)
If matches.Count > 0 Then cel.Offset(0, 1).Value = matches(0)
Next
End With
End Sub
あなた正規表現は正確であるとこのようなものは、あなたがもし文字列が一致するかを確認することができます
regEx.Test(strInput)
でVBA
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "[a-z]{2}[0-9]{2}"
Dim regEx As New RegExp
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
にそれを適切に定義する必要があります。
非常に深い回答hereが見つかります。
非常に深い答えの例3(範囲をループする)のコードを使用して:あなたはif文で何を書いていますか(regex.test )一致するものの値を返しますか?私はmsgbox(regex.execute(strinput))を試しましたが、エラーを返します: "間違った数の引数または無効なプロパティの割り当て" – machump
regex.execute(strinput)は、可能なすべての一致を返します。 'msgbox(regex.execute strinput))あなたはあまりにも多くの引数を設定しています。 @machump –
Sub test()
Dim matches, regex As Object, c As Range
Dim i As Long
Set regex = CreateObject("VBScript.RegExp")
With regex
.Pattern = "[a-z]{2}[0-9]{2}"
.Global = True
End With
For Each c In Range("A1:A4")
Set matches = regex.Execute(c.Value)
'if only one match expected...
If matches.Count > 0 Then
c.Offset(0, 1) = matches(0)
End If
'if can be multiple matches...
'For i = 1 To matches.Count
' c.Offset(0, i) = matches(i - 1)
'Next i
Next
End Sub
初めて試してみてはいかがですか?何か試しましたか? –
私は正しく動作していなかったので、私はそれを投げ捨てました。私は前にvbaでregexpを使ったことはありません。ここで私は 'サブテスト()オブジェクトとして 薄暗いstrPattern文字列として 薄暗い正規表現、文字列 セットの正規表現= CREATEOBJECT(「VBScript.RegExp」)としてstrの正規表現と .pattern =」を持っていたものの線に沿って何か[A1:A4] と一致するものは と一致します。 thing.offset(az){2} [0-9] {2} " .global = true (0,1)= regex.execute(物) next' – machump