2013-10-31 24 views
0

我知道,如果一些細胞精確值出現在一些選擇,我可以在Excel中搜索的一部分,例如查找,如果單元格的值是其他一些電池在列表

A   B 
cat  dog 
      black dog 
      black cat    
      cat 

C1=MATCH(A1;B1:B4;0) 

,這將給我4 - B1:B4中出現「貓」的第一行。

但是我想搜索第一個包含我的文本但不等於它的單元格,所以在我的情況下它將是3,因爲「黑貓」包含「貓」和「黑貓」<>「貓「

沒有VBA有可能嗎?

回答

2

您可以在MATCH中使用通配符。所以,我認爲你可以用函數像

=IF(OR(ISNA(MATCH(A2&"?*",B1:B5,0)),ISNA(MATCH("*?"&A2,B1:B5,0))),IF(ISNA(MATCH(A2&"?*",B1:B5,0)),IF(ISNA(MATCH("*?"&A2,B1:B5,0)),-1,MATCH("*?"&A2,B1:B5,0)),MATCH(A2&"?*",B1:B5,0)),IF(MATCH("*?"&A2,B1:B5,0)<MATCH(A2&"?*",B1:B5,0),MATCH("*?"&A2,B1:B5,0),MATCH(A2&"?*",B1:B5,0))) 

此功能可以確保至少有1個字符之前或之後貓做到這一點,所以它不會直接匹配貓。

這裏是MATCH


NB一些文檔。正如評論中所述,您可能必須更改,;,因爲您的區域設置似乎與我的不同。

+0

+1按預期工作 – Santosh

+1

這不一定會找到第一個匹配項 - 如果您將上述示例中的B2更改爲**「dog」**到**「ca t flap「**那麼這應該是第一次有效的比賽 - 但公式仍然會返回3 - 請參閱我的回答 –

+1

...並且如果」cat flap「是B1:B5中包含」cat「的唯一值,則公式將返回#N/A ... –

4

你有效地與兩個條件匹配 - A1包含文本 A1 <>文本內,所以你可以使用這個版本MATCH

=MATCH(1;INDEX((B1:B4<>A1)*(SEARCH(A1;B1:B4)>0);0);0)

我用分號作爲分隔符而不是逗號,因爲它看起來需要那些用於您所在地區的文件

相關問題