【问题标题】:How to extract parsed data from once cell to another如何将解析数据从一个单元格提取到另一个单元格
【发布时间】:2016-10-30 17:15:19
【问题描述】:

给定一个包含由一系列连字符段组成的字符串的电子表格单元格,我需要提取最后一个段。

例如,假设 A 列包含像 XX-XXX-X-XX-XX-G10 这样的数据字符串,其中 X 表示任何字符。我需要在 B 列中放置什么公式才能得到G10 的结果?

            A                B
1   XX-XXX-X-XX-XX-G10      G10

我正在寻找可以在 Libre Office Calc、Open Office Calc、MS Excel 或 Google 表格中使用的公式。

【问题讨论】:

  • 感谢@Mogsdad 编辑和澄清我的问题:)
  • 很高兴 - 哇,5 个答案! (当然,如果你提到你想要的部分总是 3 个字符,那就简单多了!)
  • 是的。我仍在学习 SO ;) 更准确地解释问题。再次感谢@Mogsdad 的帮助和时间(我担心会被否决!;D)

标签: excel google-sheets libreoffice openoffice-calc formulas


【解决方案1】:

您似乎希望出现在字符串末尾的字符,在连字符的最后一个实例的右侧,"-"

此公式改编自 here,适用于 Excel、*Calc 和 Google 表格:

=TRIM(RIGHT(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),LEN(A1)))

解释:

  • SUBSTITUTE(A1,"-",new_string) 将在单元格 A1 的原始字符串中查找每个连字符 ("-") 并将其替换为 new_string

  • REPT(" ",LEN(A1)) 是一串重复的空格字符 (" "),与单元格 A1 中的原始字符串长度相同。

  • TRIM(RIGHT(string,count)) 将获得最右边的 count 字符,并修剪前导和尾随空格。由于字符串之前是通过用空格替换连字符来填充的,并且count 与用于该填充的LEN(A1) 相同,因此最后一个count 字符由一堆空格和最后一个连字符后面的任何内容组成!

在 Google 表格中,另一种方法是使用 SPLIT 函数将 A 列中的值分解为一个数组,然后选择最后一个元素。 (Excel-VBA 有一个split() 函数,因此您可以通过编写 VBA 代码将其作为自定义函数在 Excel 中工作。)

=INDEX(SPLIT(A1,"-"),0,COUNTA(SPLIT(A1,"-")))

【讨论】:

    【解决方案2】:

    如果您使用的是 google 表格,也可以使用 regexextract:

    =REGEXEXTRACT(A1, "[^-]+$")
    

    【讨论】:

    • 最优雅的解决方案 - 我真的错过了 LO Calc 中支持正则表达式的替换功能!
    【解决方案3】:

    在 LibreOffice Calc 和 OpenOffice Calc 中,您可以使用正则表达式来确定文本在最后一个 - 字符之后的位置:

    =SEARCH("-[:alnum:]+$";A1)
    

    如果 A1 包含 XX-XXX-X-XX-XX-G10,将返回 15

    现在,您可以使用 RIGHT() 函数使用此值来获取该位置“后面”的文本:

    =RIGHT(A1;LEN(A1)-SEARCH("-[:alnum:]+$";A1))
    

    分成多行:

    =RIGHT(                ' return text beginning from the right...
        A1;                ' of cell A1 ...
        LEN(A1)            ' start at lenght(A1) = 18
        -                  ' minus ...
        SEARCH(            ' position ...
            "-[:alnum:]+$" ' of last "-" ...
            ;A1            ' in cell A1 = 15 ==> last three characters
        )
    )
    

    【讨论】:

      【解决方案4】:

      LO Calc 中的另一种可能性是使用此处显示的通用正则表达式宏:https://superuser.com/a/1072196/541756。那么单元格公式将类似于JPV的答案:

      =REFIND(A1,"([^-]+$)")
      

      【讨论】:

      【解决方案5】:

      我找到了简单的解决方案:

      =右(A1;3)

      这也给了我 G10 的结果!之所以有效,是因为 COL A 最后总是有 3 个字符!

      【讨论】:

      猜你喜欢
      • 2016-10-31
      • 2018-03-15
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多