2013-02-13 37 views
2

這是我工作中最糟糕的情況。我必須自動分離這組字符串,但只是不知道我應該使用哪個函數。這非常困難!我需要爲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 

字符串被成功地分離,在柱後的部件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 #  # 

(在我看來,如果我們將字符串分成兩部分,就像

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

然後分割成特定部位以後會更容易......也許吧!?)

謝謝你很多關於幫助每一位。

我將接受任何解決方案,您可以提供我以後的學習:d

「#」標記顯示字符串的部分分離成不同的細胞。

+0

我贊成非平凡分裂! – Ksenia 2013-02-13 10:48:23

+1

JQuery會做到這一點! ;-) – 2013-02-13 12:31:51

+0

關於JQuery的零知識,但謝謝你,我會研究它之後 – eathapeking 2013-02-14 02:50:46

回答

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),"-") 

該字符串不具有相同數量的元素,並且不是所有的元素都被破折號(「 - 」)分離的事實使得這更復雜比一般的字符串解析任務。當你陷入困境時,你應該回來一個更具體的問題。

+0

是的問題是,如果所有元素分開 - 破折號是很容易.. 非常感謝你:) – eathapeking 2013-02-13 08:52:30

+2

看這個主題爲好:http://stackoverflow.com/a/14453972/1953175 - 這幾乎是相同的麻煩解決了 – 2013-02-13 09:29:41

+0

...................... – eathapeking 2013-02-13 09:43:20