【问题标题】:How to extract characters in a string within a cell using in excel formula如何使用excel公式提取单元格内字符串中的字符
【发布时间】:2017-12-12 07:43:51
【问题描述】:

这是 A1 单元格中的示例字符串:

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

我想在@nX 模式中提取“n”,其中 n 的长度最多为 3 位,然后将 Cell B1 中的值相加。

例子:

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

extract value: 1, 3, 1

And add in B1: 5

我已经将公式写到第二个字符串,但它似乎会很长。

=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 个字符串?

【问题讨论】:

  • 模式 @nX 其中 n 不是单个数字,最多可以是 3 位数字。是的,字符串将用“,”分隔。
  • 这是我创建到第二个字符串的公式 .=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 excel text-extraction


【解决方案1】:

您可以像这样使用 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

同样这样,“出现次数”也不必提前确定。

【讨论】:

  • 如果@和X之间的数字在1到3位之间变化怎么办
  • 不客气。如果有帮助,也请随意投票:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多