Google sheets 从单元格中提取字符串
我在谷歌表单的一个单元格中有一些文本,例如-Google sheets 从单元格中提取字符串,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我在谷歌表单的一个单元格中有一些文本,例如-2月1日-SG4601382(PS xxxxx 12345.666和12345.667) 我正试图将SG4601382部分提取到另一个单元格中,S字符的起始位置在每个单元格中有所不同,因为有时日期可能是2月1日,有时是2月12日 你们当中有谁知道我是如何做到这一点的吗?您可以使用搜索功能查找S的位置 例如,如果“二月一日-SG4601382(PS xxxxx 12345.666和12345.667)”是A1单元格中的文本,则 =SEARCH("
2月1日-SG4601382(PS xxxxx 12345.666和12345.667)
我正试图将SG4601382
部分提取到另一个单元格中,S
字符的起始位置在每个单元格中有所不同,因为有时日期可能是2月1日,有时是2月12日
你们当中有谁知道我是如何做到这一点的吗?您可以使用搜索功能查找S的位置 例如,如果“二月一日-SG4601382(PS xxxxx 12345.666和12345.667)”是A1单元格中的文本,则
=SEARCH("S",A1,0)
将的“S”定位为11
现在,如果SG4601382每次都是长度为10的字符串,那么您可以使用MID公式将其提取出来,如下所示
=MID(A1,SEARCH("S",A1,0),10)
提供SG4601382如果您的数据足够通用,可以查找“-”,请尝试: 或者稍微不那么具体:
=REGEXEXTRACT(A1,"—(\S+)")
编辑作为一个数组:
=INDEX(IF(A1:A="","",(REGEXEXTRACT(A1:A,"—(\S+)"))),)
或者,您应该能够使用 这可以很容易地转换为一个数组公式
=Arrayformula(if(len(A2:A), regexextract(A2:A, "—(.*?)\s"),))
最短的是
=REGEXEXTRACT(B2,"—(\w+)")
或者作为数组
=INDEX(IFERROR(
REGEXEXTRACT(B2:B,"—(\w+)")))
(请根据您的需要调整范围和区域设置)
编辑(以下)
作为另一种选择,要“释放下面的所有单元格”,请尝试
=QUERY(索引(REGEXEXTRACT(B2:B,“-(\w+))),
“其中Col1'不适用')
如果所需数字前的字符串以S开头,则此公式将失败。。为此,您需要搜索另一个模式,如本例中的“SG”而不是“S”欢迎。请记住,当答案回答您的问题时,它甚至是它,这样其他人也可以从中受益。这是一个很好的数组处理方法。我第一次看到使用IFERROR()
。我会记住的。@JvdV如果你喜欢IFERROR()
方式,我想你会喜欢查询方式。请检查更新的答案。
=REGEXEXTRACT(B2,"—(\w+)")
=INDEX(IFERROR(
REGEXEXTRACT(B2:B,"—(\w+)")))
=QUERY(INDEX(REGEXEXTRACT(B2:B,"—(\w+)")),
"where Col1<>'#N/A' ")