当前位置:文档之家› EXCEL的文本函数REPLACE、FIND和SEARCH

EXCEL的文本函数REPLACE、FIND和SEARCH

EXCEL的文本函数REPLACE、FIND和SEARCH
文本中的LEFT、MID、RIGHT、LEN、LENB、SUBSTITUTE有印象不?最后一个类似于替换,你也用过替换命令的,很多时候需要对某个文本中的部分内容进行替换,除了EXCEL原本具有的查找替换功能以外还可以用文本替换函数,而SUBSTITUTE 就是替换函数之一,如果你知道要替换的字符是什么但不知道该字符在文本中的具体位置就可以使用该函数,比如:你好你们好你好,要把你好替换成你不好,条件是被替换的字符串是你好,要替换成你不好,文本中我不确定具体位置就用SUBSTITUTE公式=SUBSTITUTE(A1,"你好","你不好"),字符串:你好你们好你好中,我要把第二个你好替换成你不好呢?也就是说第一个你好我不替换,只替换第二个出现的你好,还是使用SUBSTITUTE,因为我不知道第二个你好的位置在哪
=SUBSTITUTE(A1,"你好","你不好",2)后面的数字2是该函数的第四个参数,代
表替换位置,也就是替换第二个你好,通过组合我们可以完成一些小应用,所以SUBSTITUTE的替换作用还是挺实用的,但我们如何知道一个文本中有几个指定
的字符?这是一个小应用
比如这一串文本中有几个好字?如果知道这个文本中有几个好字?
比如里面有三个好,如果用公式算出来?如何用公式来
整出来?比如原来的字符宽是多少?再判断替换掉好字的文本的宽度,再相减,不就是结果了?不用替换成空格,替换成空
第一步替换好为无=SUBSTITUTE(A1,"好",),第二步判断已替换的字符长
=len(SUBSTITUTE(A1,"好",))第三步用原来的字符长去减
=len(a1)-len(SUBSTITUTE(A1,"好",))得到最后的答案,len是判断字符长度的,这上次已讲过了,赫赫。

=len("abc")结果为3代表abc文本中有三个字符len("中华人民共和国")结果是7代表有7个字符,上次讲了LEFT、MID、RIGHT、LEN、LENB、SUBSTITUTE,len是判断字符长度的,一个字母,一个数字,一个汉字都是
一个字符,lenb是判断字节长的,一个半角字母或数字为一个字节,一个汉字是
两个字节,这个可以看上次的聊天记录吧。

现在我来讲一个REPLACE,REPLACE
也是替换函数,他的参数描述是replace(原文本,第几个字符,宽度,替换成的新文本)比如A1="abcde"我要把A1的第2和第3个字符变成x,也就是我要把abcde 变成axde,用replace函数就是=replace(a1,2,2,"x")从a1的第2个位置开始,向右截2个字符宽度,以x来替换,replace一般用在已知道具体的替换位置的
应用
比如,我要把A列的值变成B列的值,A1的第1个字符开始,向右4个字符宽度,用A来替换,这个理解不
REPLACE 还有一个特别的功能,就是添加字符
从第5个字符开始,插入-B,第三个参数没有数字,意思就是插入字符了,REPLACE 有替换功能,同样也有插入功能,替换与插入由第三个参数决定,这个需要多多的练习的,在概念上和SUBSTITUTE用法不一样,容易混淆。

现在说下FIND和SEARCH,这两个函数都是查找,他们的区别是FIND可以区分大小写而SEARCH 不能,还有一个是FIND不可以使用通配符而后者能,我来举例子
这里面可以看出,FIND是区域大小写的,SEARCH不区分,现在我来就刚才乐观的问题,我们来分析一下思路
这个用到了前面的方法,找出第三个逗号的位置,第三个逗号的位置怎么找?我们第一步把第三个逗号换成文本中没有的符号,比如#
substitute(a1,",","#",3)
把A1中第3个逗号换成#然后通过FIND#来确定#的位置,即第三个逗号的位置=find("#",substitute(a1,",","#",3)
这个FIND+SUBSTITUTE可以确定了第三个逗号的位置,然后可以通过LEFT来截取,也可以通过REPLACE来替换,用REPLACE的话需要保证替换的文本是固定的,比如用REPALCE,=REPLACE(A1,FIND("#",SUBSTITUTE(A1,",","#",3))+1,7,C1)
从A1给定的文本中确定第三个逗号的位置+1,固定宽度是7,替换成C1的值,为什么要FIND()+1,FIND是第三个逗号的位置,而我们要从第三个逗号右边的第一个字符开始替换,所以要+1
但这个公式不怎么通用,如果长度不固定怎么
办?=LEFT(A1,FIND("#",SUBSTITUTE(A1,",","#",3))+1)&C1&",工资"
这样倒通用些,忘了,LEFT后,就不能+1了
=LEFT(A1,FIND("#",SUBSTITUTE(A1,",","#",3)))&C1&",工资",这样就对了,find的功能是判断字符位置的,比如find("a",A1)判断a在a1中的位置,比如find("a","cda") 结果值为3,意思是a在cda中的第3个字符,我现在讲的都是函数的基本应用,呵呵,我所讲的这一些其实F1一下都有,复杂在于函数嵌套、组合函数之类的,首先要弄懂的是单个函数的应用,然后尝试组合式的,我说的也可能面面俱到,不同的应用,函数公式也会不一样,再复杂的函数也肯定有其原理,我们要学会去分析,主要是构建一个思路,通过这个思路,你也要善于举一反三,比如12384113这个数字串中第二个1在什么位置上,如果判断第二个1?
我们可以想到用FIND,FIND有三个参数find(查找值,文本,查找起始位置)
如果我写上 FIND(1,A1)只会返回第一个符合条件的位置,也就是第1个1的位置,如果我人确定了第一个字符为1,那们我们可以跳过这个1,直接从第2个字符开始查【ejypx-壹加壹,=find(1,a1,find(1,a1)+1)】
就像壹加壹这公式那样,如果连第1个1的位置也无法确定,那需要先确定第一个1的位置后再进行判断=FIND(1,A1,第1个1的位置+1)也就是
=find(1,a1,find(1,a1)+1)但这个公式有极大的欠缺,如果第十个1的位置呢?难道要套用9个FIND?所以通用的最好用,FIND+SUBSTITUTE形式的组合,如果确定第十个1的位置=find(#任意文本中没有的字符",SUBSTITUTE(A1,1,"任意文本中没有的字符",10))通过第10个1替换成其他的字符,再通过查找该字符,可以变相的确定第十个1的位置,比如A1=123123112确定第3个1的位置,首先SUBSTITUTE(A1,1,"#",3)把文本改成了123123#12再find("#","123123#12")可以找出#的位置,是7。

今天就到这了,呵呵,如果接受上有些困难,那是因为缺少操作吧。

find是用来判断位置的,一般判断出来的位置是作为其他函数的参数进行后续处理的。

相关主题