字符提取
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 360x2,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)))
您在 Mid
和 Find
方面走在了正确的轨道上。这两者的组合将能够搜索两个特定字符和 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(:)))
我正在尝试提取 excel 中字符串中“=”和 space 之间的字符。但是,每当我尝试这样做时,都会出现错误,或者它会在文本字符串中的不同 space 之后提取数据。这些字符串的字符长度和 space 之后的内容各不相同。本质上,我需要提取“=”和 space 之间的任何内容(因此“grips=”之后的数字,但不是数字之后的任何乱码)文本示例:
gbg bobbrazer gb3 360x2,5/6,25x50 4/8/22 grips=100 fls922 IE522-11
gbg bobbrazer bloodtrait 360x2,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)))
您在 Mid
和 Find
方面走在了正确的轨道上。这两者的组合将能够搜索两个特定字符和 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(:)))