复杂的搜索和在Excel中查找

时间:2014-04-17 12:25:19

标签: excel excel-formula

我在Excel中有2列。

列A包含10,000行数据的列表。 B列有500行文本可在A列中找到

我知道我可以使用以下公式:= IF(SUM(IFERROR(FIND(TRIM($ C $ 2:$ C $ 3023),A2),0))> 0,“是”,“否”) 但这只能一次搜索1个小区搜索。

有什么方法可以创建一个函数来搜索C2列中找到的任何文本/数字:C500并在A2中查找任何数据:A10000?

这是我想要实现的基本形象。

enter image description here

2 个答案:

答案 0 :(得分:1)

在标准模块中输入以下 UDF (用户定义函数):

Public Function IsItThere(rBig As Range, rLittle As Range) As String
    Dim v As String
    IsItThere = "Not Found"
    v = rBig.Value
    For Each r In rLittle
        v2 = r.Value
        If v2 <> "" Then
            If InStr(v, v2) > 0 Then
                IsItThere = "found"
                Exit Function
            End If
        End If
    Next r
End Function

要使用它,请在 B2 中输入公式:

=IsItThere(A2,C$2:C$500)

并复制下来。

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = IsItThere(A2,C $ 2:C $ 500)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      有关UDF的详细信息

      必须启用宏才能使其生效!

答案 1 :(得分:1)

您还可以使用一个简单的公式:

=IF(IFERROR(VLOOKUP(A2;$C$2:$C$9;1;);0)=0;"No";"Yes")
而不是你的......