字符提取

Character extraction

我正在尝试提取 excel 中字符串中“=”和 space 之间的字符。但是,每当我尝试这样做时,都会出现错误,或者它会在文本字符串中的不同 space 之后提取数据。这些字符串的字符长度和 space 之后的内容各不相同。本质上,我需要提取“=”和 space 之间的任何内容(因此“grips=”之后的数字,但不是数字之后的任何乱码)文本示例:

gbg bobbrazer gb3 360x2,5/6,25x50 4/8/22 grips=100 fls922 IE522-11

gbg bobbrazer bloodtrait 36​​0x2,5/6,25x50 4/8/22 grips=12 IE0008

因此,对于上述示例,我需要第一个字符串的结果为“100”,第二个字符串的结果为“12”。每次我使用 Mid(left 和 LEN( 组合时,我都可以使它适用于特定的集合,但前提是由于某种原因最后的乱码是相同的。我正在使用的当前公式是这种可憎的:

=IFERROR(IFERROR(MID(LEFT(D2,FIND(" K",D2)-1),FIND("=",D2)+1,LEN(D2)),MID(LEFT(D2 ,FIND(" B",D2)-1),FIND("=",D2)+1,LEN(D2))),MID(LEFT(D2,FIND(" U",D2)-1),FIND ("=",D2)+1,LEN(D2)))

您在 MidFind 方面走在了正确的轨道上。这两者的组合将能够搜索两个特定字符和 return 字符串 in-between 它们。

这是执行此操作的 Excel 公式:

=MID(A1,FIND("=",A1)+1,FIND(" ",A1,FIND("=",A1))-FIND("=",A1)-1)

由于您已标记 VBA,因此 VBA 方法如下:

    Dim myString As String, PositionOfEquals As Long, PositionOfNextSpace As Long
    myString = [A1]
    PositionOfEquals = InStr(1, myString, "=")
    PositionOfNextSpace = InStr(PositionOfEquals, myString, " ")
    Debug.Print Mid(myString, PositionOfEquals + 1, PositionOfNextSpace - PositionOfEquals - 1)

更易于使用LET并在使用过程中分配您的值

=LET(text, I4, eq, IFERROR(FIND("=", text), 0), space, IFERROR(FIND(" ", text, eq), LEN(text)+1), MID(text, eq + 1, space-eq-1))

假设:

  • “=”始终存在;
  • 您要提取的文本部分是一个整数;
  • 这个整数的长度永远不会超过 99 个字符;

您可以尝试以下方法:

B1中的公式:

=-LOOKUP(1,-MID(A1,FIND("=",A1)+1,ROW(:)))