Table of contents
我们在电子表格中对文本的下一步操作是专门用于提取。 找出从多个谷歌表格单元格的不同位置一次性提取各种数据的方法--文本、字符、数字、URL、电子邮件地址、日期& 时间等。
从字符串中提取文本和数字的谷歌表格公式
谷歌表格中的公式无所不包。 虽然有些组合添加了文本& 数字和删除各种字符,但有些组合也提取了文本、数字、单独的字符等。
按位置提取数据:第一/最后/中间的N个字符
当你要从谷歌表格单元格中取出数据时,最容易处理的函数是LEFT、RIGHT和MID。 它们按位置获得任何数据。
从谷歌表格中的单元格开头提取数据
你可以使用LEFT功能轻松地拉出前N个字符。
LEFT(string,[number_of_characters])- 绳子 是你想提取数据的文本。
- 字符数 是指从左边开始要取出的字符数。
这里有一个最简单的例子:让我们把电话号码中的国家代码拿出来。
正如你所看到的,国家代码在单元格的开头需要6个符号,所以你需要的公式是。
=LEFT(A2,6)
提示:ArrayFormula将使其有可能一次从整个范围内获得6个字符。
=ArrayFormula(LEFT(A2:A7,6))
从谷歌表格中的单元格末尾提取数据
要从单元格中取出最后N个字符,请使用RIGHT函数来代替。
RIGHT(string,[number_of_characters])- 绳子 仍然是要提取数据的文本(或单元格引用)。
- 字符数 也是要从右边抽取的字符数。
让我们从相同的电话号码中得到那个国家的名字。
他们只需要2个角色,这正是我在公式中提到的。
=RIGHT(A2,2)
提示:ArrayFormula还可以帮助你一次从所有Google表单元格的末端提取数据。
=ArrayFormula(RIGHT(A2:A7,2))
从谷歌表格中的单元格中间提取数据
如果有从单元格的开头和结尾提取数据的函数,那么肯定也有一个从中间提取数据的函数。 是的--有一个。
这就是所谓的MID。
MID(string, starting_at, extract_length)- 绳子 - 你想把中间部分拿出来的文本。
- 开始时间 - 你想从哪个字符开始获取数据的位置。
- 抽取长度(Extract_length - 你需要拉出的字符数。
通过相同的电话号码的例子,让我们找到没有国家代码和国家缩写的电话号码本身。
由于国家代码以第6个字符结束,第7个是破折号,我将从第8个数字开始提取数字。 而我总共会得到8个数字。
=MID(A2,8,8)
提示:将一个单元格改为整个范围,并将其包裹在ArrayFormula中,可以一次性提供每个单元格的结果。
=ArrayFormula(MID(A2:A7,8,8))
从字符串中提取文本/数字
有时按位置提取文本(如上图所示)不是一种选择。 所需的字符串可能位于单元格的任何部分,并由不同数量的字符组成,迫使你为每个单元格创建不同的公式。
但是,如果谷歌表没有其他有助于从字符串中提取文本的功能,它就不是谷歌表了。
让我们回顾一下电子表格提供的几种可能方式。
提取某个文本之前的数据 - LEFT+SEARCH
每当你想提取某个文本之前的数据时,使用LEFT + SEARCH。
- 左边 用于返回从单元格开始的一定数量的字符(从其左边开始)。
- 搜索 寻找某些字符/字符串并获得其位置。
结合这些--LEFT将返回SEARCH建议的字符数。
这里有一个例子:如何提取每个 "ea "之前的文本代码?
这是在类似情况下帮助你的公式。
=LEFT(A2,SEARCH("ea",A2)-1)
以下是公式中发生的情况。
- SEARCH("ea",A2) 在A2中寻找'ea',并返回每个单元格中'ea'开始的位置-10。
- 所以第10个位置是'e'所在的位置。 但由于我想得到'ea'之前的所有东西,我需要从该位置减去1。 否则,'e'也会被返回。 所以我最终得到9。
- 左边 看A2,得到前9个字符。
提取文本后的数据
也有一些方法可以获得某个文本字符串之后的所有内容。 但这次,RIGHT不会有帮助。 相反,REGEXREPLACE会轮到它。
提示:REGEXREPLACE使用正则表达式。 如果你不准备处理它们,有一个更简单的解决方案,如下所述。 REGEXREPLACE(text, regular_expression, replacement)
- 文本 是一个字符串或一个单元格,你想在其中进行修改。
- 正则表达式 是指代表你要寻找的文本的一部分的字符组合。
- 替换 是你想得到的任何东西,而不是那个 文本
那么,你如何使用它来提取某个文本之后的数据--在我的例子中是'ea'?
很简单--使用这个公式。
=REGEXREPLACE(A2,"(.*)ea(.*)","$2")
让我解释一下这个公式到底是如何运作的。
- A2 是我要提取数据的一个单元格。
- "(.*)ea(.*)" 是我的正则表达式(或者你可以称之为掩码)。 我寻找'ea',并将所有其他字符放入括号中。 有两组字符--'ea'之前的所有字符是第一组(.*),'ea'之后的所有字符是第二组(.*)。 整个掩码本身被放入双引号中。
- "$2" 是我想得到的东西--前一个参数中的第二组(因此其数字为2)。
提示:正则表达式中使用的所有字符都收集在这个特殊页面上。
从谷歌表格单元格中提取数字
如果你想只提取数字,当它们的位置和任何之前&之后的东西都不重要时怎么办?
掩码(又称正则表达式)也会有帮助。 事实上,我将采用同样的REGEXREPLACE函数并改变正则表达式。
=REGEXREPLACE(A2,"[^[:digit:]]", "")
- A2 是一个单元格,我想从那里得到这些数字。
- "[^[:digit:]]" 是一个正则表达式,除了数字之外,其他的都可以接受。 那个^caret符号就是为数字提供例外的原因。
- "" 用 "无 "替换除数字字符以外的所有内容。 或者,换句话说,完全删除,只在单元格中留下数字。 或者,提取数字 :)
提取文本,忽略数字和其他字符
以类似的方式,你可以从谷歌表格单元格中只取出字母数据。 代表文本的正则表达式的缩略语被称为相应的--α。
=REGEXREPLACE(A2,"[^[:alpha:]]", "")
这个公式把除了字母(A-Z,a-z)以外的所有东西都拿出来,并从字面上把它替换成 "无"。 或者,换一种说法,只拿出来字母。
从谷歌表格单元格中提取数据的无公式方法
如果你正在寻找一种简单的无公式的方法来提取各种类型的数据,那么你就来对地方了。 我们的Power Tools插件正好有适合这项工作的工具。
使用Power Tools附加组件提取不同类型的数据
我想让你知道的第一个工具叫Extract,它的作用正是你在本文中要找的--从谷歌表格单元格中提取不同类型的数据。
方便用户的设置
我上面讲到的所有情况都不只是可以用附加组件解决的。 该工具方便用户使用 所以你需要做的就是选择你要处理的范围,并勾选所需的复选框。 没有公式,没有正则表达式。
还记得本文第二点中的REGEXREPLACE和正则表达式吗? 下面是它的附加功能,很简单。
额外选项
正如你所看到的,有一些 额外选项 (只是复选框),你可以 快速打开/关闭 以获得最精确的结果。
- 只获取所需文本大小写的字符串。
- 从每个单元格中拉出所有出现的情况,并将它们放在一个单元格或单独的一列中。
- 在源数据的右边插入一个新的列,其结果是。
- 清除源数据中提取的文本。
提取不同的数据类型
Power Tools不仅可以提取某些文本字符串和第一个/最后一个N个字符之前/之后/之间的数据;而且还可以提取以下内容。
- 数字和它们的小数,保持小数/千位数的分隔符不动。
从任何地方提取任何字符串的数据
还有一个选项是设置你自己的精确模式,并使用它来提取。 按面具提取 和它的通配符 - 和 ? - 做到这一点。
- 例如,你可以用下面的掩码把括号之间的东西都带出来。 (*)
- 或者得到那些ID中只有5个数字的SKU。 SKU?????
- 或者,正如我在下面的截图中所显示的那样,在每个单元格的每个 "ea "后面拉出所有的东西。 ea*
从时间戳中提取日期和时间
作为奖励,有一个较小的工具可以从时间戳中提取日期和时间--它叫做Split Date & Time。
虽然它首先是为了拆分时间戳而创建的,但它完全可以单独获得所需的一个单位。
只需根据你要提取的内容--日期或时间--选择其中一个复选框,从谷歌表的时间戳中提取,然后点击 分割 所需的单位将被复制到一个新的列中(如果你也选择了最后一个复选框,它将取代原来的数据)。
这个工具也是Power Tools插件的一部分,所以一旦你安装了它,从Google Sheets单元格中获取任何数据,它就能完全覆盖你。 如果没有,请留言,我们会帮你解决:)