【问题标题】:Excel, MID, SEARCH ErrorExcel,MID,搜索错误
【发布时间】:2017-03-27 23:51:23
【问题描述】:

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

=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

谢谢,

【问题讨论】:

    标签: excel search excel-formula


    【解决方案1】:

    只要示例 2200 始终为 4 位,这应该可以工作:

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

    【讨论】:

      【解决方案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}

      【讨论】:

        【解决方案3】:

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

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


        注意

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

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

        【讨论】:

          【解决方案4】:

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

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

          注意 double-unary(又名 double-minus--)将文本看起来像数字的数字转换为真实数字。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-26
            • 2016-08-07
            • 1970-01-01
            • 2013-03-09
            • 2015-06-09
            • 1970-01-01
            • 1970-01-01
            • 2021-12-06
            相关资源
            最近更新 更多