这是我工作中最糟糕的情况。我必须自动分离这组字符串,但只是不知道我应该使用哪个函数。这完全是困难的!我需要在Excel中为数据库工作的下一步分离字符串。
以下是数据示例:
要在A列中分隔的字符串 -
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
成功分离后的字符串部分,在B C D E F G H I -
列中# 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 # #
(在我看来,如果我们首先将字符串分成两部分,比如
java-1.6.0-openjdk-1.6.0.0-1.21.b17 ##### .el6.x86_64
然后分成特定部分将更容易......也许!?)
非常感谢您的帮助。
我会接受您可以提供给以后学习的任何解决方案:D
“#”标记表示将字符串部分分隔为不同的单元格。
答案 0 :(得分:2)
以下公式不是一个完整的解决方案,但应该为您提供一个起点,让您了解您需要执行的字符串操作的类型:
从要解析的字符串的头部开始:
=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),"-")
(我在字符串的中间留下了一些让你这样做。)
从要解析的字符串的尾部:
=IFERROR(MID(A1,SEARCH("el",$A1),SEARCH("x",A1)-(SEARCH("el",A1)+1)),"-")
=IFERROR(RIGHT(A1,LEN(A1)-SEARCH("x",A1)+1),"-")
字符串不具有相同数量的元素并且并非所有元素都用短划线(“ - ”)分隔的事实使得这比通常的字符串解析任务更复杂。当你遇到困难时,你应该回答一个更具体的问题。
答案 1 :(得分:2)
对于非常复杂的字符串提取,我很想在工作表函数中使用正则表达式。
请参阅http://excelicious.wordpress.com/code-samples/vba/regex-functions/了解可以使用/ on构建的库。