String 从电子表格中的单个单元格解析或提取文本

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始终获取总金额,因为所需子字符串的长度并不总是相同的 如果有人知道这个问题的解决方案,请回复。此外,如果有一个在谷歌电子表格中

以下是我想做的:

从一个类似“收据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+?"))
或者为了更方便