给定一个包含字符串的电子表格单元格,该字符串由一系列带连字符的字符段组成,我需要提取最后一段。
例如,考虑包含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表格中使用的公式。
答案 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个字符!