5

Excel プログラムで一致機能を使用していますが、同一の一致のみを選択するため、問題があります。たとえば、「バナナ」を含むセルと「バナナ」を含む別のセルを比較すると、正の値が返されます。
しかし、"Banana" と "Banana choco" という内容のセルを比較すると、セル内に "Banana" という単語があることは認識されません。

私の場合、文中に単語が見つかった場合は常に TRUE 値を返したいと考えています。

これが私のコードです:

Worksheets("sBldgMakati").Activate

For i = 2 To 605
  Range("B" & i).Activate
  myResult = IsNumeric(Application.Match(ActiveCell.Value, elementsListRange, 0))

   If myResult Then
   Range("K" & i).Value = Range("K" & i).Value + 10
   Else
   Range("K" & i).Value = Range("K" & i).Value + 0
End If

Next i  

elementsListRangeこのコードでは、内容が 1 つの単語 (「バナナ」など) のみであり、ActiveCell.value通常はより長い表現 (「バナナ チョコ」など)であるセル範囲に対応することを指定する必要があります。

よろしくお願いいたします。

4

2 に答える 2

2

次の関数を使用します。文字列内の部分文字列に一致します。

Function match(searchStr As Variant, matchStr As Variant) As Boolean
    match = False
    If (IsNull(searchStr) Or IsNull(matchStr)) Then Exit Function
    If (matchStr = "") Or (searchStr = "") Then Exit Function
    Dim f As Variant
    f = InStr(1, CStr(searchStr), CStr(matchStr), vbTextCompare)
    If IsNull(f) Then Exit Function
    match = f > 0
End Function

範囲で使用するには:

Dim searchstr="A Banana found"
Dim isFound as boolean
IsFound=false
For each c in range
    If match(searchstr, c.value) 
         IsFound=true
         Exit for
    End if
End for

searchStrmatchStrはバリアントであるため、Excel セルからそれに値を渡すことができることに注意してください。

于 2013-04-23T10:45:59.443 に答える