以下のコードは、セル内の文字列を検索し、その前に来る検索語と単語の両方を抽出します。セル配列から文字列を抽出する
検索語が「(hello)」のときはコードが機能しますが、「hello hey」にするとコードが見つかりません。私は "hello"と "hey"の間の空白を想定していますが、その変更をどうやって行うのかは分かりません。
Dim c As Range, v As String, arr, x As Long, e
Dim d As Range
Set d = WorkSheets("Sheet1").Range("F1") '<<results start here
For Each c In ActiveSheet.Range("D1:D10")
v = Trim(c.Value)
If Len(v) > 0 Then
'normalize other separators to spaces
v = Replace(v, vbLf, " ")
'remove double spaces
Do While InStr(v, " ") > 0
v = Replace(v, " ", " ")
Loop
'split to array
arr = Split(v, " ")
For x = LBound(arr) To UBound(arr)
e = arr(x)
'see if array element is a word of interest
If Not IsError(Application.Match(LCase(e), Array("(hello hey)"), 0)) Then
If x > LBound(arr) Then
d.Value = arr(x - 1) & " " & e 'prepend previous word
Else
d.Value = "??? " & e 'no previous word
End If
Set d = d.Offset(1, 0)
End If
Next x
End If
Next c
End Sub
は「(ちょっとハロー)」、一致することはありません、あなたはスペース上のすべてのセル値を分割している(とそうarr' 'には値にスペースが含まれません)。 –
@TimWilliamsカッコ内を単一のVauleとして扱う方法はありますか? – johndoe253