2014-04-17 71 views
0

我在excel中兩列。複雜的搜索和查找在Excel

列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

回答

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窗口

如果保存工作簿,UDF將隨之保存。 如果您正在使用一個版本的Excel更高然後2003,你必須 將文件保存爲.XLSM而不是。XLSX

要刪除UDF:

  1. 彈出VBE窗口如上
  2. 清晰的代碼進行
  3. 關閉VBE窗口

從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

必須啓用宏才能使其工作!

+0

輝煌!你讓它看起來很簡單:) – William

1

你也可以使用一個簡單的公式:

=IF(IFERROR(VLOOKUP(A2;$C$2:$C$9;1;);0)=0;"No";"Yes") 

代替或您......