如何从一次单元格提取解析数据到另一个单元格

时间:2016-06-28 11:36:49

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

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

例如,考虑包含XX-XXX-X-XX-XX-G10等数据字符串的A列,其中X表示任何字符。我需要在B列中放置哪个公式才能得到G10

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

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

5 个答案:

答案 0 :(得分:2)

如果您使用的是Google工作表,也可以使用regexextract:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

=SEARCH("-[:alnum:]+$";A1)
如果A1包含15

将返回XX-XXX-X-XX-XX-G10

现在,您可以使用此值将文本“置于”该位置后面,使用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
    )
)

答案 3 :(得分:0)

您希望显示在字符串末尾的字符位于连字符的最后一个实例"-"的右侧。

此公式改编自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,"-")))

答案 4 :(得分:0)

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

  

= RIGHT(A1; 3)

也给了G10作为结果!它的工作原理是因为COL A最终总共有3个字符!