如何在Excel中提取两个不同字符之间的数字?

时间:2019-02-27 12:55:42

标签: excel

我想从以下字符串中提取此数字:“ 456”:

  

“ abc def!123z ghi!456z @ jkl”

我要提取的数字总是在<!> 之后和“ z @” 字符串之前

谢谢

3 个答案:

答案 0 :(得分:1)

或者您可以看一下:

编辑并更正:

// You do not have to initialize the string, you have it as the response to the api
var str = "[{\"detectedLanguage\":{\"language\":\"de\",\"score\":1.0},\"translations\":[{\"text\":\"Heute ist ein schöner Tag\",\"to\":\"de\"},{\"text\":\"Today is a beautiful day\",\"to\":\"en\"}]}]";
var result = JArray.Parse(str)
    .FirstOrDefault(x => x["detectedLanguage"]["language"].ToString() == "de")  // Find the German detection as there may be other
    ["translations"]    // get the 'translations' property
    .FirstOrDefault(x => x["to"].ToString() == "en")    // get the translation result object in for English
    ["text"];   // Get the value
Console.WriteLine(result);

enter image description here

这是我所能得到的那么短...但是它确实假设在目标编号之前的字符串中总是有两个“!”。

现在已编辑以捕获一两个“!” ...

实例
=MID(A2,FIND("! ",A2,FIND("! ",A2,1)+1)+2,LEN(A2)-(FIND(" @",A2,1)+2))

enter image description here

答案 1 :(得分:0)

如果您的字符串位于单元格A1中,则可以通过以下方式获取该特定号码:

=TRIM(RIGHT(LEFT(A1,FIND("z @",A1,1)-1),LEN(LEFT(A1,FIND("z @",A1,1)-1))-FIND("|",SUBSTITUTE(LEFT(A1,FIND("z @",A1,1)-1),"!","|",LEN(LEFT(A1,FIND("z @",A1,1)-1))-LEN(SUBSTITUTE(LEFT(A1,FIND("z @",A1,1)-1),"!",""))))))

这是一个很长的公式,假设您可能在写入!之前在字符串中多次出现z @

它只是占据z @的位置,并从该位置到A1的右边到!的开头直到最后出现z @的字符串,并会修剪其中的空格。 / p>

注意:只有当JSON.parse(value)出现一次时,此方法才起作用。

答案 2 :(得分:0)

这应该对您有用:

=--TRIM(MID(SUBSTITUTE(A1,"! ",REPT(" ",LEN(A1))),FIND("z @",SUBSTITUTE(A1,"! ",REPT(" ",LEN(A1))))-LEN(A1),LEN(A1)))