2017-03-27 48 views
2

我有兩個字符串,我想提取中間的「2200」我使用的公式Excel中,MID,搜索錯誤

=VALUE(MID(C3,SEARCH("_",C3)+11,4)) 

C3是其中的字符串是數。這個公式工作「字符串2」,並給我我想要的價值「2200」,但不適用於「字符串1」我得到#VALUE !.如果我更改公式

=VALUE(MID(C3,SEARCH("_",C3)+10,4)) 

它適用於「字符串1」,但對於「字符串2」不工作,我怎麼能在這兩種情況下,相同的公式工作?

字符串1:ABC_1A1B_33C_2200_4AB_ABC4_4800

字符串2:ABC_10A1B_33C_2200_4AB_ABC4_4800

THX,

回答

3

這應該工作,只要該示例2200總是4位長:

=LEFT(REPLACE(D7,1,FIND("@",SUBSTITUTE(D7,"_","@",3)),""),4) 
+0

謝謝,它的工作。 – fali

1

這確實不在意長度,只是它是第四塊:

=TRIM(MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999)) 

enter image description here


以上返回一個字符串,看起來像一個數字。如果號碼是什麼都想然後用--

=--MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999) 
1

更換TRIM該解決方案是基於第三和第四下劃線之間數字的靜態位置。

=--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2, "_", REPT(" ", LEN(A2)), 4), "_", REPT(" ", LEN(A2)), 3), LEN(A2), LEN(A2))) 

enter image description here

注意雙一元(又名雙減--)文本,也就是說,看起來類似一個數轉換爲真實數量。

2

如果要提取值始終處於第四的位置,那麼你可以嘗試:

=INDEX(TRIM(MID(SUBSTITUTE(C3,"_",REPT(" ",99)),seq_99,99)),4,1) 

其中seq_99是一個命名的公式中,指的是:

=IF(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))=1,1,(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))-1)*99) 

seq_99將返回一個數組:{1,99,198,297,...,25146}