String 从电子表格中的单个单元格解析或提取文本
以下是我想做的: 从一个类似“收据28.19沃尔玛”或“收据117.58亚马逊”的单元格开始,我希望能够将美元金额提取到另一个单元格。因此,一个函数将分别在每个单元格中放置28.19和117.58 我知道如果知道文本字符串的起始位置和长度,可以使用MID函数提取部分文本,但这里的问题是长度可能不同。例如,28.19的长度为5,而117.58的长度为6,因此我无法使用MID始终获取总金额,因为所需子字符串的长度并不总是相同的String 从电子表格中的单个单元格解析或提取文本,string,excel,parsing,google-sheets,excel-formula,String,Excel,Parsing,Google Sheets,Excel Formula,以下是我想做的: 从一个类似“收据28.19沃尔玛”或“收据117.58亚马逊”的单元格开始,我希望能够将美元金额提取到另一个单元格。因此,一个函数将分别在每个单元格中放置28.19和117.58 我知道如果知道文本字符串的起始位置和长度,可以使用MID函数提取部分文本,但这里的问题是长度可能不同。例如,28.19的长度为5,而117.58的长度为6,因此我无法使用MID始终获取总金额,因为所需子字符串的长度并不总是相同的 如果有人知道这个问题的解决方案,请回复。此外,如果有一个在谷歌电子表格中
如果有人知道这个问题的解决方案,请回复。此外,如果有一个在谷歌电子表格中运行的解决方案,这也是可以接受的。我假设从excel到google sheets,许多函数都是相同的。考虑以下几点。看看我是如何一步一步找到答案的<代码>=MID(A3,SEARCH(“,A3)+1,SEARCH(“,MID(A3,SEARCH(“,A3)+1,LEN(A3))-1)。如果您想了解更多信息,请查看此免费课程(链接将在10天后过期)
考虑以下几点。看看我是如何一步一步找到答案的<代码>=MID(A3,SEARCH(“,A3)+1,SEARCH(“,MID(A3,SEARCH(“,A3)+1,LEN(A3))-1)。如果您想了解更多信息,请查看此免费课程(链接将在10天后过期)
如果您可以保证格式为
[word][space][number][space][word]
,那么这应该可以:
:
=修剪(中间部分(替换(A1)”,报告(“,透镜(A1)),(2-1)*透镜(A1)+1,透镜(A1)))
如果
A1
有“收据28.19沃尔玛”如果您能保证格式为[word][space][number][space][word]
,那么这应该可以:
:
=修剪(中间部分(替换(A1)”,报告(“,透镜(A1)),(2-1)*透镜(A1)+1,透镜(A1)))
其中A1
有“收据28.19沃尔玛”您需要单元格中给定字符串中两个空格之间的数字。因此,对于类似“receipt 2356.14789 amazon”的字符串,我们必须找到空白的pos
现在,要找到字符串中第n个空间的位置,我们可以使用这些公式
1st Position : =find(" ",a1)
2nd Position : =find(" ",a1,find(" ",a1)+1)
3rd Position : =find(" ",a1,find(" ",a1,find(" ",a1)+1)+1)
...........
Nth position : =find(" ",a1,find(" ",a1,find(" ",a1,find(" ",a1,......n-1 times find(" ",a1)+1)+1)+1.....n-1 times +1)
因此,使用上述公式查找字符串中的第一个和第二个空格:
在b1和c1中,我们有8和19的值是字符串中空白空间的位置。现在我们想要的结果是,让字符串是s
s with removal of "receipt " & " amazon"
现在我们可以使用MID函数来获得输出。
MID函数:=MID(文本、开始数、字符数)
给定起始位置和长度,返回文本字符串中间的字符
因此,我们有起始位置,即第一个空白位置(8),我们必须计算num_字符,即长度
要计算长度,我们必须进行以下计算:
subtract the len of "amazon" from total len of string
length of substring s2 : =len(a1)- FIND(" ",A1,FIND(" ",A1)+1) which is second blank pos.
add len of sub string1 and sub string2
s2 + FIND(" ",A1)
现在,使用mid函数我们将得到
=MID(A1,FIND(" ",A1),F1,(LEN S1+ LEN S2))
现在修剪这个值,因为它将在“receive”的开头包含一个空格
因此,最终公式如下:
=TRIM(MID(A1,FIND(" ",A1),LEN(A1)-FIND(" ",A1,FIND(" ",A1)+1)+FIND(" ",A1)))
第二种方法:
将“定界”与“选择空间”一起使用。快捷方式ALT->A->A->E,分隔选择空格,然后输入
输出:
您需要单元格中给定字符串中两个空格之间的数字。因此,对于类似“receipt 2356.14789 amazon”的字符串,我们必须找到空白的pos
现在,要找到字符串中第n个空间的位置,我们可以使用这些公式
1st Position : =find(" ",a1)
2nd Position : =find(" ",a1,find(" ",a1)+1)
3rd Position : =find(" ",a1,find(" ",a1,find(" ",a1)+1)+1)
...........
Nth position : =find(" ",a1,find(" ",a1,find(" ",a1,find(" ",a1,......n-1 times find(" ",a1)+1)+1)+1.....n-1 times +1)
因此,使用上述公式查找字符串中的第一个和第二个空格:
在b1和c1中,我们有8和19的值是字符串中空白空间的位置。现在我们想要的结果是,让字符串是s
s with removal of "receipt " & " amazon"
现在我们可以使用MID函数来获得输出。
MID函数:=MID(文本、开始数、字符数)
给定起始位置和长度,返回文本字符串中间的字符
因此,我们有起始位置,即第一个空白位置(8),我们必须计算num_字符,即长度
要计算长度,我们必须进行以下计算:
subtract the len of "amazon" from total len of string
length of substring s2 : =len(a1)- FIND(" ",A1,FIND(" ",A1)+1) which is second blank pos.
add len of sub string1 and sub string2
s2 + FIND(" ",A1)
现在,使用mid函数我们将得到
=MID(A1,FIND(" ",A1),F1,(LEN S1+ LEN S2))
现在修剪这个值,因为它将在“receive”的开头包含一个空格
因此,最终公式如下:
=TRIM(MID(A1,FIND(" ",A1),LEN(A1)-FIND(" ",A1,FIND(" ",A1)+1)+FIND(" ",A1)))
第二种方法:
将“定界”与“选择空间”一起使用。快捷方式ALT->A->A->E,分隔选择空格,然后输入
输出:
最简单的方法也是我个人最喜欢的方法是使用regex extract:
=REGEXEXTRACT ("YOUR TEXT", "\D+(\d+\.?\d+)\D+?")
这基本上是说,字符串以任意数量的非数字字符\D+
开头,后跟一些数字\D+
,这些数字可能包含或不包含一个带另一个数字的十进制,也可能后跟更多的非数字字符
数字模式周围的括号指示它仅提取该值
请注意,这是专门针对谷歌表单的,因为你说你也希望在那里有一个
如果您需要对提取的文本求和,只需将其包装为值:
=VALUE(REGEXEXTRACT (A1 , "\D+(\d+\.?\d+)\D+?"))
或者,为了更加方便,如果您有一整列值,您可以输入一个公式来运行您的正则表达式:
=ARRAYFORMULA(IF(LEN(O1:O)>0,VALUE(REGEXEXTRACT (O1:O , "\D+(\d+\.?\d+)\D+?")),))
最简单的方法也是我个人最喜欢的方法是使用regex extract:
=REGEXEXTRACT ("YOUR TEXT", "\D+(\d+\.?\d+)\D+?")
这基本上是说,字符串以任意数量的非数字字符\D+
开头,后跟一些数字\D+
,这些数字可能包含或不包含一个带另一个数字的十进制,也可能后跟更多的非数字字符
数字模式周围的括号指示它仅提取该值
请注意,这是专门针对谷歌表单的,因为你说你也希望在那里有一个
如果您需要对提取的文本求和,只需将其包装为值:
=VALUE(REGEXEXTRACT (A1 , "\D+(\d+\.?\d+)\D+?"))
或者为了更方便