Sorry to take so long to get back to you - it was a 4 day weekend here in the UK, so I've been relaxing.
The code for a UDF might look something like this:
Function WordMatch(sSearchText As String, rngSearchRange As Range, Optional bCaseSensitive = False) As Boolean
Const sBREAKING_CHARS = "*,.;:!()<>[]{}"""
Dim sWorkingSearch As String
Dim lBreakLoop As Long
Dim rngMatch As Range
Dim asWordArray() As String
Dim lWordLoop As Long
Dim bTmpReturn As Boolean
sWorkingSearch = sSearchText
For lBreakLoop = 1 To Len(sBREAKING_CHARS)
sWorkingSearch = Replace(sWorkingSearch, Mid(sBREAKING_CHARS, lBreakLoop, 1), " ")
Next lBreakLoop
sWorkingSearch = Trim(sWorkingSearch)
asWordArray = Split(sWorkingSearch, " ")
bTmpReturn = False
For lWordLoop = LBound(asWordArray) To UBound(asWordArray)
Set rngMatch = rngSearchRange.Find(asWordArray(lWordLoop), LookIn:=xlValues, lookat:=xlWhole, MatchCase:=bCaseSensitive)
If Not rngMatch Is Nothing Then
bTmpReturn = True
End If
Next lWordLoop
WordMatch = bTmpReturn
End Function
Inserting this into a module in your workbook would allow you to use the following formula in cell C1:
=WordMatch(B1,$A$1:$A$300)
Or, if you wanted to make it case-sensitive then:
=WordMatch(B1,$A$1:$A$300,TRUE)
The first thing that the code does is convert each of the characters listed in the constant sBREAKING_CHARS into spaces in your search string. You can add or remove characters from that string as you need. The string has three quote marks at the end because the quotes character itself will also be treated as a space. If you don't want quotes to delimit a word then change that string to end with just a single quote.
Hope that makes sense, let me know if you need further details.
Bookmarks