string与特定模式分离的公式

这是我工作中最糟糕的情况。 我必须自动分离这组string,但只是不知道我应该使用哪个函数。 这是非常困难的! 我需要分开我的数据库工作在Excel中的下一步的string。

这里是数据的例子:

要在列A中分隔的string –

java-1.6.0-openjdk-1.6.0.0-1.21.b17.el6.x86_64 java-utils-1.6.0.0-1.el6.x386 Java-1.7.0-openjdk-1.7.1-3.1.5 gdb-1.6-5.2.7.el6 

成功分离后的string部分,在BCDEFGHI –

 # name # Version # OSLv # Architecture # java # 1.6.0 #openjdk # 1.6.0.0 # 1.21.b17 # el6 # x86_64 # java# utils# # 1.6.0.0 # 1 #el6_3 #x386 # Java# # # 1.7.1 # 3.1.5 # # # gdb # # # 1.6 #5.2.7 #el6 # # 

(在我看来,如果我们把string分成两部分,就像

 java-1.6.0-openjdk-1.6.0.0-1.21.b17 ##### .el6.x86_64 

那么稍后拆分成特定的部分会更容易…也许!?)

非常感谢您的帮助。

我会接受你可以提供给我以后学习的任何解决scheme:D

“#”标记表示将string的部分分离成不同的单元格。

下面的公式不是一个完整的解决scheme,但应该提供一个开始位置,让您了解您将需要执行的string操作的types:

从要parsing的string的头部:

  =LEFT(A1,SEARCH("-",A1)-1) =IFERROR(MID(A1,LEN(A6)+2,SEARCH("-",A1,LEN(A6)+2)-LEN(A6)-2),"-") =IFERROR(MID(A1,LEN(A6&B6)+3,SEARCH("-",A1,LEN(A6&B6)+3)-LEN(A6&B6)-3),"-") =IFERROR(MID(A1,LEN(A6&B6&C6)+4,SEARCH("-",A1,LEN(A6&B6&C6)+5)-LEN(A6&B6&C6)-4),"-") 

(我在string的中间留下了几个字,供你使用。)

从要被parsing的string的尾部:

  =IFERROR(MID(A1,SEARCH("el",$A1),SEARCH("x",A1)-(SEARCH("el",A1)+1)),"-") =IFERROR(RIGHT(A1,LEN(A1)-SEARCH("x",A1)+1),"-") 

string没有相同数量的元素,而不是所有的元素都用破折号(“ – ”)分隔的事实使得这比通常的stringparsing任务更加复杂。 当你卡住了,你应该回来一个更具体的问题。

对于真正复杂的string提取,我会试图去工作表函数中的正则expression式。

请参阅http://excelicious.wordpress.com/code-samples/vba/regex-functions/了解您可以使用/打开的库。