Excel,MID,SEARCH错误

我有两个string,我想提取中间的数字“2200”我使用公式

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

C3是string的地方。 这个公式工作“string2”,并给我的价值,我正在寻找“2200”,但不适用于“string1”我得到#VALUE !. 如果我改变公式

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

它适用于“string1”,但不适用于“string2”我怎么能在这两种情况下有相同的公式工作?

string1:ABC_1A1B_33C_2200_4AB_ABC4_4800

string2:ABC_10A1B_33C_2200_4AB_ABC4_4800

谢谢,

只要示例2200总是4位数字,这应该工作:

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

如果你想提取的值总是在第四位,那么你可以尝试:

 =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}

这不关心的长度,只是它是第四块:

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

在这里输入图像说明


注意

上面的返回一个文本string,看起来像一个数字。 如果一个数字是想要的,那就把TRIMreplace成--

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

该解决scheme基于数字的静态位置在第三和第四个下划线字符之间。

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

在这里输入图像说明

请注意双重一元 (又称双减号-- ),将文本看起来像一个数字转换为一个真正的数字。