【问题标题】:Get a string out of a string of dash-separated values从一串用破折号分隔的值中获取一个字符串
【发布时间】:2018-01-07 23:27:34
【问题描述】:

我有一个看起来像这样的表格,(第 1 行仅用作标题):

 |----------A----------|---------B--------|--------C---------|---------D--------|
1|  String of Strings  |     Thing  1     |     Thing  2     |     Thing  3     |
 |---------------------|------------------|------------------|------------------|
2|   q1-22ll-o7kp-e... |         q1       |       22ll       |     ??????       |
 |---------------------|------------------|------------------|------------------|

使用this指南,我已经能够成功填写单元格B2和C2:

B2:=LEFT(A2, SEARCH("-",A2,1)-1)

C2:=MID(A2, SEARCH("-",A2) + 1, SEARCH("-",A2,SEARCH("-",A2)+1) - SEARCH("-",A2) - 1)

不过,我正在尝试了解 D2 的模式。我没有完全理解 C2 在做什么——我将如何构建 C2 的公式,以便我可以在我的字符串字符串中获得 第三个​​ 的东西?

我想一旦我看到 D2 的模式,我就可以继续选择 E2、F2 等。

我希望找到适用于 Google 表格或 Excel 的解决方案。

【问题讨论】:

    标签: excel string excel-formula google-sheets google-sheets-query


    【解决方案1】:

    A2 中有数据,在 B2 中输入:

    =TRIM(MID(SUBSTITUTE($A2,"-",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
    

    并复制:

    【讨论】:

    • 这对我来说是巫术,但它就像一个魅力。谢谢!
    • @PercentSharp 很高兴为您提供帮助!感谢您的反馈。
    【解决方案2】:

    在 Google 表格中,您可以在 B2 中使用 SPLIT,它会将结果扩展到右侧的单元格:

    =SPLIT(A2, "-")
    

    对于每个单独的部分,您可以使用INDEX

    =INDEX(SPLIT(A2, "-"), , 1)
    =INDEX(SPLIT(A2, "-"), , 2)
    ...
    

    对于与索引无关的最后 2 项:

    =REGEXEXTRACT(A2, ".*-(.*)-")
    =REGEXEXTRACT(A2, ".*-(.*)")
    

    【讨论】:

    • 感谢这个巧妙的解决方法,但我试图让每行 2 公式独立地足以在我的工作簿的其他地方使用 ^^。
    • 此解决方案仅适用于google-spreadsheet OP 刚刚编辑了问题以指定他们正在寻找一个也适用于 excel 的解决方案。
    • @Rubén "要么 Google 表格或 Excel。"
    • 公平地说,我与平台无关(在编辑中使用“要么/或”)- Slai 的解决方案也很有帮助,因为我不介意在任何一个平台上处理我的数字。跨度>
    • c'est la vie 我想考虑到我们在 12 分钟内找到了适用于这两个平台的解决方案 :)。不过感谢您的细微差别,重要的是要保持适度。
    【解决方案3】:

    虽然B2 的公式使用直截了当的LEFT,但C2 的公式有点复杂,使用函数MID(text, start_num, num_chars)

    • text 显然是输入单元格 = A2
    • start_num 是输出开始的索引,在这种情况下,SEARCH("-",A2) + 1,它是第一个 - 之后的一个字符。
    • num_chars 是输出将包含的字符数。这是棘手的部分!它实际上通过从第二个破折号的索引中减去第一个破折号的索引来计算第一个- 和第二个- 之间的字符数。

    这不是递归解决此问题的最佳方法,但我确实认为理解每个代码很重要,以便下次编写最佳代码。

    【讨论】:

    • 感谢您的解释,这很有道理。这主要是我链接的帮助文章中的复制+粘贴,但我看到它很快就会变得非常臃肿。
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2019-05-08
    相关资源
    最近更新 更多