excel搜索项目及其后缀的列表

时间:2019-03-01 14:50:46

标签: excel excel-formula

我正在尝试搜索列表中的所有实例,以查找与条件组中列出的条目匹配或开头的条目。想象一下由以下内容组成的服务器列表。在该服务器上也有数据库的地方,它以_SQL,_ORACLE后缀表示:

A列

  • VM001
  • VM001_SQL
  • VM002
  • VM002_SQL
  • VM003
  • VM003_SQL
  • VM0003_ORACLE
  • VM004
  • VM004_SQL
  • VM005
  • VM006

我需要从下面的组中搜索所有服务器

D列

  • VM002
  • VM003

我需要能够在A列的列表中识别出VM002的2个列表和VM003的3个列表。

我可以使用功能=COUNTIF(A:A,D1&"*")轻松搜索VM002或VM003在整个列表中出现的次数。

然后,我需要某种方法来指示Col A中的哪些服务器与较小的服务器组中的服务器匹配,以便进行排序,过滤等。如何识别Col A中的条目及其后缀?

1 个答案:

答案 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)

并向下复制:

enter image description here

用户定义的功能(UDF)非常容易安装和使用:

  1. ALT-F11弹出VBE窗口
  2. ALT-I ALT-M打开一个新模块
  3. 将内容粘贴并关闭VBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

删除 UDF:

  1. 如上调出VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

使用来自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