2014-09-22 94 views
2

我有一個包含3列的數據數組,行數隨着更多數據的添加而增加。我有一些已知的值,例如XX-12345,XXX-12345或XXXX-12345,我需要識別並返回該單元格中的內容。問題是命名約定不是標準的,因此該值可能如下所示:XX-12345-Temp,XX-12345.Temp XXX-12345-Temp,XXX-12345.Temp或XXXX-12345-Temp, XXXX-12345.Temp在範圍中查找部分文本,返回單元格值

下面是我必須執行此功能的代碼,但它並不總是工作。有時它返回一個零,我不明白爲什麼它這樣做。

=INDIRECT("R"&REPLACE(TEXT(MIN(IF(ISNUMBER(SEARCH(F2,$A$2:$C$15349)),(ROW($A$2:$C$15349))*1000+COLUMN($A$2:$C$15349))),"000000"),4,0,"C"),FALSE) 

回答

1

我不知道你真正需要的是涉及取代這種結構。您可以使用:

= INDIRECT(TEXT(MIN(IF(ISNUMBER(SEARCH(F2,$ A $ 2:$ C $ 15349)),10^5 * ROW($ A $ 2:$ C $ 15349)+ COLUMN( $ A $ 2:$ C $ 15349))), 「R0C00000」),FALSE)

問候

+0

@XOR_LX是的,那最好不過了!大概10^5,以適應任何可能的範圍是多少? – 2014-09-23 13:14:40

+0

事實上,至少在工作表中少於10^5列!假設這在2013年沒有改變? – 2014-09-23 13:38:15

+0

它尚未更改 - http://office.microsoft.com/en-gb/excel-help/excel-specifications-and-limits-HA103980614.aspx?redir=0 – 2014-09-23 13:44:55

0

這個公式只因爲在排工作到行999 1000 ROW * 1000 = 1000000,這將打破「000000」的公式中 - 試試這個版本,這將爲範圍工作提高到99,999行

=INDIRECT("R"&REPLACE(TEXT(MIN(IF(ISNUMBER(SEARCH(F2,$A$2:$C$15349)),(ROW($A$2:$C$15349))*1000+COLUMN($A$2:$C$15349))),"00000000"),6,0,"C"),FALSE)

我改變了「000000」到「00000000」,並因爲在REPLACE功能的4需要一個6

相關問題