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/了解您可以使用/打开的库。