我正在尝试编写一个宏来搜索和显示基于搜索词的数据行,该搜索词是一个部分字符串(通常是4个字符,可能是16个),我是一个完整的初学者,但到目前为止,我有以下内容(在戈德的帮助下):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Application.ScreenUpdating = False
With ActiveSheet
.Rows.Hidden = False 'unhides all rows
End With
For Each cell In ActiveSheet.Range("C3:C1000")
If cell.Value <> ActiveSheet.Range("A1").Value Then _
cell.EntireRow.Hidden = True
If ActiveSheet.Range("A1").Value = "" Then
cell.EntireRow.Hidden = False
End If
Next
Range("A1").Select 'ready for next value input
Application.ScreenUpdating = True
End Sub
如何将搜索词定义为部分匹配,而不是完全匹配和松散的案例感觉?
TIA
邓肯
数据字符串没有特殊字符,只有0-9和A-Z,因此可能是Like函数适合任务。如果是这样,宏会如何变化?道歉,但这是新手。
它尝试编辑:
如果ActiveSheet.Range(&#34; A1&#34;)。值=&#34;&#34;然后
to:如果ActiveSheet.Range(&#34; A1&#34;)。值类似&#34; *&#34;然后
但没有结果
答案 0 :(得分:2)
首先尝试将您的字符串(针和干草堆)转换为LCASE()
,然后使用LIKE
运算符。如下例所示
if lcase(haystack) like "*" & lcase(needle) & "*" then
'do something
这与regexp一样。因此,如果包含 needle ,它将调查字符串haystack。 *表示一切(或没有)。这是清楚的吗?
答案 1 :(得分:2)
由于我们无法知道您的针头是否包含like
- 敏感字符,例如#
或?
,我建议通过instr()提供解决方案:
if instr(lcase(haystack), lcase(needle)) > 0 then
' Do Stuff
这为您提供needle
中haystack
第一次出现的起始位置,如果找不到needle
则为0。