Excel,MID,SEARCH错误

时间:2017-03-27 23:51:23

标签: excel search excel-formula

我有两个字符串,我想在中间提取数字" 2200"我正在使用公式

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

C3是字符串的位置。这个公式适用于"字符串2"并给我我正在寻找的价值" 2200"但不适用于" String 1"我得#VALUE!如果我改变公式

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

适用于" String 1"但不适用于" String 2"如何在两种情况下使用相同的配方?

字符串1:ABC_1A1B_33C_2200_4AB_ABC4_4800

字符串2:ABC_10A1B_33C_2200_4AB_ABC4_4800

THX,

4 个答案:

答案 0 :(得分:3)

只要示例=LEFT(REPLACE(D7,1,FIND("@",SUBSTITUTE(D7,"_","@",3)),""),4) 总是4位数字:

,这就应该有效
<happy>
  This did the trick : the boys now have a more distant friendship and David is much happier . 
<\happy>
<happy>
  When Anna left Inspector Aziz , she was much happier . 
<\happy>

答案 1 :(得分: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}

答案 2 :(得分:1)

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

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

enter image description here

请注意

上面返回一个看起来像数字的文本字符串。如果需要数字,请将TRIM替换为--

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

答案 3 :(得分:1)

此解决方案基于第三个和第四个下划线字符之间的数字的静态位置。

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

enter image description here

请注意双一元(又名 double-minus --),它将类似文本的数字转换为true号。