如何在excel公式中使用单元格中的string提取字符

这里是A1单元格中的示例string:

13TR@1X1127, 13TR@3X2500, @1X1373 

我想在模式@nX中提取“n”,其中n可以长达3位数,然后将单元格B1中的值相加。

例:

 13TR@1X1127, 13TR@3X2500, @1X1373 extract value: 1, 3, 1 And add in B1: 5 

我已经写了公式,直到第二个string,但它似乎会很长。

 =MID(A1,FIND("@",A1,1)+1,FIND("X",A1,FIND("@",A1,1))-FIND("@",A1,1)-1)+IFERROR(MID(A1,FIND("@",A1,FIND("X",A1,FIND("@",A1,1)))+1,FIND("X",A1,FIND("@",A1,FIND("X",A1,FIND("@",A1,1))))-FIND("@",A1,FIND("X",A1,FIND("@",A1,1)))-1),0) 

有没有一种方法来简化公式,所以它将总结为第N个string?

你可以使用这样的VBA函数:

编辑允许@X之间的多个数字。)

 Function SumNums(strIn As String) As Integer Dim p1 As Integer, p2 As Integer p1 = InStr(strIn, "@") Do While p1 > 0 p2 = InStr(p1, strIn, "X") - 1 SumNums = SumNums + Val(Mid(strIn, p1 + 1, p2 - p1)) p1 = InStr(p1 + 1, strIn, "@") Loop End Function 

也是这样,“发生次数”不必事先决定。