Table of contents
学习公式和无公式的方法来修剪空白处,删除特殊符号(甚至是第一个/最后一个N个字符),以及一次性从多个单元格中删除某些字符之前/之后的相同文本字符串。
从几个单元格中同时删除相同的文字部分和添加它一样重要和棘手。 即使你知道一些方法,你肯定会在今天的博文中找到新的方法。 我分享了大量的函数和它们现成的公式,而且,像往常一样,我把最简单的--无公式--留到最后;)
谷歌表格的公式,从单元格中删除文本
我将从谷歌表的标准函数开始,这些函数将从单元格中删除你的文本字符串和字符。 这没有通用的函数,所以我将为各种情况提供不同的公式及其组合。
谷歌表格:删除空白处
在导入后或多个用户同时编辑工作表时,空格很容易溜进单元格。 事实上,多余的空格是如此普遍,以至于谷歌表有一个专门的修剪工具来删除所有空格。
只要选择所有你想删除空白的谷歌表单元格,并选择 数据> 修剪空白处 在电子表格菜单中。
当你点击该选项时,选择中的所有前导和尾部空间将被完全拿走,而数据之间的所有额外空间将被减少到一个。
从谷歌表格的文本字符串中删除其他特殊字符
唉,谷歌表没有提供一个工具来 "修剪 "除空格以外的其他字符。 你必须在这里处理公式。
提示:或者用我们的工具来代替--"强力工具 "将把你的范围从你点击指定的任何字符中解放出来,包括空白处。
在这里,我在公寓号码和电话号码之前用标签处理,中间有破折号和括号。
我将使用公式来删除这些特殊字符。
SUBSTITUTE函数将帮助我解决这个问题。 它通常用于用一个字符替换另一个字符,但你可以把它变成你的优势,把不需要的字符替换成......嗯,什么都不需要 :) 换句话说,把它删除。
让我们看看这个函数需要什么参数。
SUBSTITUTE(text_to_search, search_for, replace_with, [ occurrence_number])- 文本_to_search 是要处理的文本或包含该文本的单元格。 要求。
- 搜索_for 是你想找到并删除的那个字符。 需要。
- 替换_与 - 你将插入一个字符来代替不需要的符号。 需要。
- 发生次数 - 如果你要找的字符有几个实例,你可以在这里指定替换哪一个。 这是完全可选的,如果你省略这个参数,所有的实例都会被替换成新的东西( 替换_为 ).
所以我们来玩吧,我需要找到一个标签( ) 在 A1 并将其替换为 "无",在电子表格中用双引号标记( "" )。 考虑到所有这些,我可以建立以下公式。
=substitute(a1, "#","" )
提示:标签也在双引号中,因为在谷歌表格公式中应该以这种方式提及文本字符串。
如果谷歌表格不提供自动操作,就把这个公式复制到下一列,你就会得到没有标签的地址。
但是,那些破折号和括号怎么办? 你应该创建额外的公式吗? 完全不需要!如果你在一个Google Sheets公式中嵌套多个SUBSTITUTE函数,你将从每个单元格中删除所有这些字符。
=substitute(substitute(substitute(a1, "#",""),"(",""),""),"-","
这个公式逐个删除字符,每个SUBSTITUTE,从中间开始,成为下一个SUBSTITUTE要看的范围。
提示:更重要的是,你可以用ArrayFormula包裹它,并一次性覆盖整个列。 在这种情况下,改变单元格引用( A1 )到你的数据栏中( A1:A7 )也是如此。
=ArrayFormula(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1:A7, "#","),"(","),"),"-","))
从谷歌表格的单元格中删除特定文本
虽然你可以使用前面提到的谷歌表的SUBSTITUTE函数来删除单元格中的文本,但我也想展示另一个函数--REGEXREPLACE。
它的名字是 "正则表达式替换 "的首字母缩写。 而我要用正则表达式来搜索要删除的字符串,并将其替换为 ' 无'( "" ).
提示:如果你对使用正则表达式不感兴趣,我在这篇博文的最后描述了一个更简单的方法。
提示:如果你正在寻找查找和删除谷歌表格中的重复内容的方法,请访问此博文。 REGEXREPLACE(text, regular_expression, replacement)
如你所见,该函数有三个参数。
- 文本 - 是你寻找要删除的文本字符串的地方。 它可以是双引号中的文本本身,也可以是对有文本的单元格/区域的引用。
- 正则表达式 - 你的搜索模式,由各种字符组合组成。 你将寻找所有与此模式相匹配的字符串。 如果我可以这么说的话,这个参数是所有乐趣发生的地方。
- 替换 - 一个新的期望的文本字符串。
假设我的单元格中的数据也包含国家名称( 美国 ),如果在细胞的不同位置。
REGEXREPLACE将如何帮助我删除它?
=regexreplace(a1,"(.*)us(.*)", "1 $2")
以下是该公式的具体运作方式。
- 它扫描单元格的内容 A1
- 以寻找与该掩码相匹配的信息。 "(.*)US(.*)"
这个掩码告诉函数要寻找 美国 无论前面有多少个其他字符,都是如此 (.*) 或跟随 (.*) 国家的名称。
而整个掩码按照函数的要求被放到了双引号中:)
- 最后一个参数-- "$1 $2" - 是我想得到的东西。 $1 和 $2 每个人都代表这两组人物中的一个 -- (.*) - 你应该在第三个参数中提到这些组,这样公式就可以返回所有可能存在于该参数前后的东西。 美国
至于说到 美国 本身,我只是在第3个参数中没有提到它--意思是,我想把所有从 A1 没有 的 美国 .
提示:有一个专门的页面,你可以参考它来建立各种正则表达式,并在单元格的不同位置寻找文本。
提示:至于那些剩余的逗号,上述的SUBSTITUTE函数将有助于摆脱它们;)你甚至可以用SUBSTITUTE包围REGEXREPLACE,用一个公式解决所有问题。
=substitute(regexreplace(a1,"(.*)us(.*)", "1 $2"),",")
删除所有选定单元格中某些字符之前/之后的文本
例1.谷歌表的REGEXREPLACE函数
当涉及到摆脱某些字符前后的一切时,REGEXREPLACE也有帮助。 记住,该函数需要3个参数。
REGEXREPLACE(text, regular_expression, replacement)而且,正如我在上面介绍该函数时提到的那样,你应该正确使用第二个函数,这样该函数才知道要找到并删除什么。
那么,我如何删除地址并在单元格中只保留电话号码?
以下是我将使用的公式。
=REGEXREPLACE(A1,".*\n.*(\+.*)","$1")
- 下面是我在这种情况下使用的正则表达式。 ".*\n.*(\+.*)"
在第一部分-- .*\n.* - 我使用 反斜杠+n 所以我想让这个函数删除换行前后的所有内容(包括它)。
括号中的第二部分是 (\+.*) 我把这部分放在括号里,以便将其分组,并在以后记住它。
提示:反斜杠用在加号之前,把它变成你要找的字符。 没有它,加号就只是表达式的一部分,代表其他一些字符(例如星号)。
- 至于最后一个参数--1美元--它使函数只返回第二个参数的那一组:加号和后面的所有内容。 (\+.*) .
以类似的方式,你可以删除所有电话号码但保留地址。
=REGEXREPLACE(A1,"(.*\n).*","$1")
只是这一次,你告诉函数将断行前的所有内容分组(并返回),并将其余部分清除。
例2.右键+LEN+FIND
还有一些谷歌表函数可以让你删除某个字符之前的文本。 它们是RIGHT、LEN和FIND。
注意:这些函数只有在要保留的记录长度相同的情况下才有帮助,比如我的例子中的电话号码。 如果它们不是,就用REGEXREPLACE代替,或者更好的是,用最后描述的更简单的工具。
以特定的顺序使用这个三重奏将帮助我获得相同的结果,并删除一个字符--加号--之前的整个文本。
=right(a1,(len(a1)-(find("+",a1)-1))
让我解释一下这个公式是如何运作的。
- FIND("+",A1)-1 找到A1中加号的位置号( 24 )并减去1,所以总数不包括加号本身。 23 .
- LEN(A1)-(FIND("+",A1)-1) 检查A1中的总字符数( 40 )并从中减去23(由FIND计算)。 17 .
- 然后RIGHT从A1的末端(右边)返回17个字符。
不幸的是,在我的案例中,这种方式对删除换行后的文本没有多大帮助(清除电话号码并保留地址),因为地址的长度不同。
好吧,没关系,反正最后的工具能更好地完成这项工作;)
从谷歌表格的字符串中删除第一个/最后一个字符
每当你需要从一个单元格的开头或结尾删除一定数量的不同字符时,REGEXREPLACE和RIGHT/LEFT+LEN也会有所帮助。
注意:由于我在上面已经介绍了这些函数,我将缩短这一点,并提供一些现成的公式。 或者随意跳到最后描述的最简单的解决方案。
那么,我怎样才能抹去这些电话号码的代码呢? 或者,换句话说,从单元格中删除前9个字符。
- 使用REGEXREPLACE,创建一个正则表达式,找到并删除第9个以内的所有字符(包括第9个字符)。
=REGEXREPLACE(A1,"(.{9})(.*)","$2")
.
提示:要删除最后N个字符,只需交换正则表达式中的组别。
=REGEXREPLACE(A1,"(.*)(.{9})","$1")
- RIGHT/LEFT+LEN还可以计算删除的字符数,并分别从单元格的末尾或开头返回剩余部分。
=right(a1,len(a1)-9)
提示:要删除单元格中的最后9个字符,用LEFT代替RIGHT。
=left(a1,len(a1)-9)
- 最后但并非最不重要的是REPLACE函数,你告诉它从左边开始的9个字符,用什么都不替换( "" ):
=replace(a1,1,9,")
注意:由于REPLACE需要一个起始位置来处理文本,如果你需要从一个单元格的末尾删除N个字符,那么它就不能做到。
在谷歌表格中删除特定文本的无公式方法 - Power Tools插件
只要你有时间,函数和所有的东西都是好的。 但是你知道有一个特殊的工具,它包含了上述所有的方式,你所要做的就是选择所需的单选按钮? 没有公式,没有额外的列 - 你不能希望有一个更好的助手;D
你不必相信我的话,只要安装Power Tools,自己就能看到它。
- 第一组让你 删除多个子字符串或单个字符 一次从所有选定的单元格中的任何位置开始。
Power Tools的另一个工具将从时间戳中移除时间和日期单位。 它叫做Split Date & Time。
分割工具与删除时间和日期单位有什么关系? 好吧,要从时间戳中删除时间,选择 日期 因为这是你想保留的部分,也是你想勾销的部分。 替换源数据 ,就像上面的截图一样。
该工具将提取日期单位,并用其替换整个时间戳。 或者,换句话说,这个用于谷歌表格的插件将从时间戳中删除时间单位。
你可以通过从谷歌商店安装该插件来拥有所有这些和其他30多个节省时间的电子表格。 前30天完全免费,功能齐全,所以你有时间来决定是否值得任何投资。
如果你有任何与这篇博文任何部分相关的问题,我们在下面的评论区见!