Excel:提取包含 N 个破折号的子字符串

Excel:提取包含 N 个破折号的子字符串

这让我很困惑。此列表中的每个单元格都包含一个由 4 个破折号分隔的子字符串。我想要做的是能够将该字符串提取到其自己的列中。字符串在单元格之间不一定位于相同的位置。

#99760395  AP965-690-0-WE-00
#88908-789302  92WQ-50Y-0-N-900BD
6676549  9W7B-20W-0-N-00  SERVO
RZ2268461 TAO120-50-0-X-000 W/ AMPLIFIER
REF# BW309-8WV9-0-V-00

以下是我希望实现的最终结果:

AP965-690-0-WE-00
92WQ-50Y-0-N-900BD
9W7B-20W-0-N-00
TAO120-50-0-X-000
BW309-8WV9-0-V-00

我尝试过 LEN、FIND、LEFT、RIGHT 函数的组合,但似乎无法实现我想要的结果。

答案1

这里似乎您的数据总是出现在第一组空格之后,所以我认为这个函数对您有用。这里的关键是使用 Mid 函数。

截屏

=TRIM(IFERROR(MID(TRIM(A2);FIND(" ";TRIM(A2));FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);2))-FIND(" ";TRIM(A2)));RIGHT(TRIM(A2);LEN(TRIM(A2))-FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);1)))))

看起来相当混乱,所以这里做个小分析。
第 1 部分:

=RIGHT(TRIM(A2);LEN(TRIM(A2))-FIND(CHAR(1);SUBSTITUTE(TRIM(A2);CHAR(32);CHAR(1);1)))

这将找到“ ”的第一个出现位置(我们也可以使用 Char(32),但这种方式可能更容易理解。)由于 TRIM,第一组空格的长度始终为 1(一个空格)。这就是为什么我们可以使用第一次和第二次出现的位置。

第2部分:

=MID(TRIM(A2);FIND(" ";TRIM(A2));FIND(CHAR(1);SUBSTITUTE(TRIM(A2);" ";CHAR(1);2))-FIND(" ";TRIM(A2)))

这里我们查找从第一次出现到第二次出现的字符串。
如果第二次出现时没有空格,则会产生错误。这就是我们将其与第 1 部分结合起来的原因。

=Trim(IFERROR(第 2 部分;第 1 部分))

麦克风

相关内容