我正在尝试搜索列表中的所有实例,以查找与条件组中列出的条目匹配或开头的条目。想象一下由以下内容组成的服务器列表。在该服务器上也有数据库的地方,它以_SQL,_ORACLE后缀表示:
我需要从下面的组中搜索所有服务器
我需要能够在A列的列表中识别出VM002的2个列表和VM003的3个列表。
我可以使用功能=COUNTIF(A:A,D1&"*")
轻松搜索VM002或VM003在整个列表中出现的次数。
然后,我需要某种方法来指示Col A中的哪些服务器与较小的服务器组中的服务器匹配,以便进行排序,过滤等。如何识别Col A中的条目及其后缀?
答案 0 :(得分:1)
首先在标准模块中输入以下用户定义函数(UDF):
Public Function Keyword(r1 As Range, r2 As Range) As Variant
v1 = r1.Text
For Each r In r2
If InStr(v1, r.Text) = 1 Then
Keyword = 1
Exit Function
End If
Next r
Keyword = ""
End Function
然后在 B1 中输入:
=keyword(A1,$D$1:$D$2)
并向下复制:
用户定义的功能(UDF)非常容易安装和使用:
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
要删除 UDF:
要使用来自Excel的UDF,
= myfunction(A1)
要全面了解有关宏的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
,有关UDF的详细信息,请参见:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其正常工作!
EDIT#1:
要将UDF用于整列,请改用以下版本:
Public Function Keyword(r1 As Range, r2 As Range) As Variant
v1 = r1.Text
Set r2 = Intersect(r2, r2.Parent.UsedRange)
For Each r In r2
If r.Value <> "" Then
If InStr(v1, r.Text) = 1 Then
Keyword = 1
Exit Function
End If
End If
Next r
Keyword = ""
End Function