Excel 是否仅在搜索期间删除字符?

Excel 是否仅在搜索期间删除字符?,excel,vba,Excel,Vba,我有一个excel文件,它就像一个常见问题解答,有很多问答。在第一张工作表上有一个搜索功能。输入要搜索的单词,然后按enter键。然后,该函数在整个工作簿中查找这些单词。为了能够进行正确的搜索,我必须删除所有的句号、逗号、感叹号和问号 我用Replace来做这件事,但没有真正考虑后果。这些字符将从文本中永久删除,这使得它有点难以阅读,看起来也很难看 因此,我的问题是,如何仅在搜索过程中删除这些字符?我是否必须将每个文本复制到一个新单元格并在那里进行搜索,还是有其他方法 这是函数的一部分,我在其中

我有一个excel文件,它就像一个常见问题解答,有很多问答。在第一张工作表上有一个搜索功能。输入要搜索的单词,然后按enter键。然后,该函数在整个工作簿中查找这些单词。为了能够进行正确的搜索,我必须删除所有的句号、逗号、感叹号和问号

我用
Replace
来做这件事,但没有真正考虑后果。这些字符将从文本中永久删除,这使得它有点难以阅读,看起来也很难看

因此,我的问题是,如何仅在搜索过程中删除这些字符?我是否必须将每个文本复制到一个新单元格并在那里进行搜索,还是有其他方法

这是函数的一部分,我在其中删除字符并进行最终搜索

Function FindWords(cellToSearch As Range, nOfWords As Integer, myWords As String) As Long

Dim counter As Long
Dim word, element
Dim arr, wordsArr

cellToSearch = Replace(cellToSearch, Chr(33), "")
cellToSearch = Replace(cellToSearch, Chr(44), "")
cellToSearch = Replace(cellToSearch, Chr(46), "")
cellToSearch = Replace(cellToSearch, Chr(63), "")

wordsArr = Split(myWords)
arr = Split(cellToSearch)

If UBound(arr) > 0 Then
    For Each word In wordsArr
        For Each element In arr
            If LCase(word) = LCase(element) Then counter = counter + 1
        Next
    Next
Else
    ' cell to search is empty
    counter = 0
End If

If counter = nOfWords Then
    FindWords = 1
Else
    FindWords = 0
End If

End Function

您可以使用另一个变量:

Function FindWords(cellToSearch As Range, nOfWords As Integer, myWords As String) As Long

Dim counter As Long
Dim word, element
Dim arr, wordsArr
Dim sFindWord as String
sFindWord = cellToSearch.Value
sFindWord = Replace(sFindWord , Chr(33), "")
sFindWord = Replace(sFindWord , Chr(44), "")
sFindWord = Replace(sFindWord , Chr(46), "")
sFindWord = Replace(sFindWord , Chr(63), "")

wordsArr = Split(myWords)
arr = Split(sFindWord)

If UBound(arr) > 0 Then
    For Each word In wordsArr
        For Each element In arr
            If LCase(word) = LCase(element) Then counter = counter + 1
        Next
    Next
Else
    ' cell to search is empty
    counter = 0
End If

If counter = nOfWords Then
    FindWords = 1
Else
    FindWords = 0
End If

End Function

哇,我真的有一个星期一……谢谢你快速简单的回答!:D