Excel:多向字符串搜索和提取

时间:2015-06-03 09:27:00

标签: excel-formula

我有一个包含11k +行文本的列。其中一些看起来像这样:

1. vc (abrev.), viscous coupling

有些看起来像这样:

2. manual transmission fluid, mtf (abrev.)

甚至:

3. m/t (abrev.), manual transaxle, manual transmission, mt (abrev.)

我的目标是简单地从文本中提取“* (abrev.)”而不添加引号,并将其放在新列中。在第三种情况下,如果可以使用逗号提取和分隔“m/t (abrev.)”和“mt (abrev.)”,那就太好了。

到目前为止,我已经提出了这个功能

=IFERROR(IF(FIND("abrev.",C68),MID(C68,1,FIND(")",C68)),""),"")

在某些情况下有效,但不适用于所有人。 (函数已翻译为http://en.excel-translator.de/translator/,因为原始函数是葡萄牙语)。我甚至尝试在函数中使用通配符,但它们不起作用。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我有一个解决方案,但需要多列才能完成。如果数据在单元格A2中开始,则以下是公式:

B2 = FIND("(abrev.)", A2)
C2 = IFERROR(TRIM(RIGHT(TRIM(LEFT(A2,B2-1)),FIND(" ",TRIM(LEFT(A2,B2-1))))), "")
D2 = IFERROR(FIND("(abrev.)", A2, B2+1), "")
E2 = IFERROR(TRIM(RIGHT(TRIM(LEFT(A2,D2-1)),FIND(" ",TRIM(LEFT(A2,D2-1))))), "")
F2 (your goal) = CONCATENATE(IF(LEN(C2) > 0, C2 & " (abrev.)", ""), IF(LEN(E2) > 0, ", " & E2 & " (abrev.)", ""))

基本上它正在做的是找到短语"(abrev。)"然后在它前面的单词之前找到空格并选择那个短语然后再将它们放在一起。