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