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   #      #

(私の意見では、最初に文字列を2つの部分に分割すると、次のようになります。

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

そうすれば、後で特定の部分に分割するのが簡単になります...多分!?)

助けてくれてありがとう。

私はあなたが後の研究のために私に提供できるどんな解決策も受け入れます:D

「#」マークは、文字列の一部が異なるセルに分割されていることを示します。

4

2 に答える 2

2

非常に複雑な文字列抽出の場合、ワークシート関数で正規表現を使用したくなります。

/on でビルドできるライブラリについては、http://excelicious.wordpress.com/code-samples/vba/regex-functions/を参照してください。

于 2013-02-13T11:46:59.497 に答える
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),"-")

文字列の要素数が同じではなく、すべての要素がダッシュ ("-") で区切られているわけではないという事実により、これは通常の文字列解析タスクよりも複雑になります。行き詰まったときは、より具体的な質問をして戻ってくる必要があります。

于 2013-02-13T07:01:21.880 に答える