【问题标题】:Formula For String Separation with Specific Pattern具有特定模式的字符串分隔公式
【发布时间】:2013-02-13 19:46:59
【问题描述】:

这是我工作中最糟糕的情况。我必须自动分离这组字符串,但只是不知道我应该使用哪个函数。这完全是困难的!我需要在 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

“#”标记表示将字符串的各个部分分隔到不同的单元格中。

【问题讨论】:

  • 我赞成非平凡的分裂!
  • JQuery 可以做到! ;-)
  • 对 JQuery 零知识,但谢谢你,我会在这之后学习它

标签: excel excel-formula vba


【解决方案1】:

以下公式不是一个完整的解决方案,但应该为您提供一个起点,让您了解需要执行的字符串操作类型:

从要解析的字符串的头部开始:

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

字符串没有相同数量的元素并且并非所有元素都用破折号(“-”)分隔的事实使得这比通常的字符串解析任务更复杂。当您遇到困难时,您应该提出一个更具体的问题。

【讨论】:

  • 是的,问题是如果所有元素都用-破折号分隔,那就容易多了..非常感谢:)
  • 看看这个帖子:stackoverflow.com/a/14453972/1953175 - 几乎解决了同样的问题
  • 是的,你提到之前的问题,我有了一个新的想法,谢谢,谢谢>
  • @eathapeking 祝你好运,很高兴我们的社区建议对您有所帮助!
【解决方案2】:

对于非常复杂的字符串提取,我很想在工作表函数中使用正则表达式。

请参阅 http://excelicious.wordpress.com/code-samples/vba/regex-functions/ 了解您可以使用/在其上构建的库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多