find与left函数的运用
标签:
杂谈 |
今天我们讲两个函数: "Left" and "Right", "Left" 就是我们说的"左"; "Right" 就是我们说的"右", 这两个函数是字符函数. 所以大家很容易理解.
"Left" 就是从一个字符串的左边截取一段字符串; "Right"就是从一个字符串的右边截取一段字符串(或一个字符).(这里说一下, Excel的函数中的参数绝大多数都可以是自己输入的内容, 也可以是单元格的引用) (不知道是不是全部, 因为我也不是所有函数都会, 呵呵)
怎么用呢? 我们先讲"Left" ("Right"其实是一样的用法):
= Left (要截取的字符串, 需要截取多少个字符) , 比如: 我们要在 "Obama is the new president of USA" 中截取前面的15个字符. 那么函数是 (我们在A1单元格中输入这段字符串, 在A3中输入函数):
A3 =LEFT(A1,15) -- 结果是"Obama is the ne" (用肉眼算一下, 对了)
http://hiphotos.baidu.com/cunqiu/pic/item/352ac65c0d541d7dfbf2c0ce.jpg
要注意以下几点:
- Left函数的第二个参数必须是大于等于零的数字(>=0)
(如果输入负数会出错)
- 如果第二个参数大于第一个参数的字符数, 则显示第一个参数的整体
- 在Left函数中, 第二个参数其实是可以省略的, 默认为1, 也就是说 = left(A1)
的结果是字符"O". 即截取1个字符. 但是为了方便记忆, 大家还是记住需要这个参数吧,
也不差这么几个字. (在这个例子中, 大家可以看到所有的字符都计算在内, 空格也是按字符计算的)
和Find函数一样, Left也有LeftB函数, 对于双字节的字符是有用的, 大家可以看Excel的帮助, 我截取在下面(日文是双字节的):
"Right"函数的用法是一样的, 只是它是从右边开始截取. 比如:
A5 = RIGHT(A1,15) -- 结果是"resident of USA"
http://hiphotos.baidu.com/cunqiu/pic/item/fbf2b211b27ffe40ca80c4ce.jpg
好了, 很简单吧! 这两个函数真的是很简单的. 现在我们开始举例:
例子1: 我们需要截取A1单元格中的"is"这个字符串, 怎么写. 分析一下, "is"在左起第七位, 然后往右边2位字符. 但是我们还没有学习从中间截取的函数, 怎么办呢?
这个时候, 我们可以先从左边截取8位 (即"Obama is"), 然后在结果中再从右边截取2位, 就可以得到我们要的结果了. 所以函数就是:
A7 =RIGHT(LEFT(A1,8),2)
http://hiphotos.baidu.com/cunqiu/pic/item/9313b07ee9ec2b060cd7dace.jpg
用这种方法, 我们就可以截取到我们想要在字符串的中间截取的内容. (当然也可以用MID函数, 我们下次再讲)
例子2: 来个复杂一点的, 我们要截取A1单元格中的"new"字符串后面的8位字符.
继续审题: 要找到"new"字符串后面的8位字符, 就要先把"new"后面的所有字符提取出来,
然后再用"Left"函数从左边取8位.
需要: "new"后面的所有字符提取出来,
就要先用Right函数截取, 那么第二个参数是多少呢?
需要知道: 第二个参数是多少,
就需要找到"new"在的几位(FIND函数),
然后用A1字符串的总长度减去"new"的位置再减2就得到了. (这里我们还没有学习计算字符串总长度的函数,
我们暂且当我们已经知道总长度是33)
知道了整个的逻辑, 我们就一步步从下往上写:
需要找到"new"在的几位: A10 = FIND("new",A1)
那么"new"后面的字符串就是: A11 = RIGHT(A1,33-FIND("new",A1)-2)
最后找这个字符串的左边8位: A12 = LEFT(RIGHT(A1,33-FIND("new",A1)-2),8)
结果如下:
例子3: A10中有字符串, 请用函数找出两个大写的"I"之间的所有内容.(A10的长度为38)
A10 = I work in Shanghai, but I love Xiamen.
http://hiphotos.baidu.com/cunqiu/pic/item/0cd79123b0b1ef7aad34dece.jpg
要找出A10当中的两个"I"之间的内容, 也就是要找出第一个"I"的右边和第二个"I"的左边的内容. 所以这题的关键就是如何找出两个"I"的位置.
所以, 我们可以先找出第一个"I"右边的字符串, 然后在这个字符串中从左边一直找到第二个"I"出现的位置.
找第一个"I"右边的字符串比较容易: = RIGHT(A10,38-FIND("I",A10)) -- 通过"Find"函数找到第一个"I"的位置, 然后用Right从右边截取总长度减去第一个"I"的位置.
如何找第二个"I"呢? 其实方法我们在"Find"函数里面已经介绍过了, 我就不再多说. = FIND("I",A10,FIND("I",A10)+1)
好, 整个函数就应该是: =
LEFT(RIGHT(A10,38-FIND("I",A10)),FIND("I",A10,FIND("I",A10)+1)-2)
http://hiphotos.baidu.com/cunqiu/pic/item/97dda144845817bcb2b7dcce.jpg
例子4: A18中是由数字组成的字符串, 我们的要求是: 如果第3位的和第8位的数字的和大于第16位和第20位的乘积, 同时第19位大于5的话, 显示"Bingo", 否则显示"Gosh"
http://hiphotos.baidu.com/cunqiu/pic/item/ad34598299db9e9c0cf4d2ce.jpg
如果A就显示B,否则显示C, 用什么? 用IF函数嘛! 那么"同时"用什么函数? 用AND嘛! 所以函数就是
= If (and("第3位的和第8位的数字的和大于第16位和第20位的乘积","第19位大于5"), "Bingo", "Gosh")
如何计算: 第3位的和第8位的数字的和大于第16位和第20位的乘积? 加减乘除大家会了. 关键是怎么找出某位的数字?
我们拿"找第3位数字"做例子. 要找到第3位, 我们可以用Left找到前4位, 然后在用Right找最右边那一位. 函数就是: = RIGHT(LEFT(A18,4),1)
所以, 第3位的和第8位的数字的和大于第16位和第20位的乘积 就可以写成:
=
(RIGHT(LEFT(A18,4),1)+RIGHT(LEFT(A18,9),1))>(RIGHT(LEFT(A18,17),1)*RIGHT(LEFT(A18,21),1))
第19位大于5 就可以写成: = RIGHT(LEFT(A18,20),1)*1>5 . 为什么要乘以1呢? 因为我们用Left或者Right截取的是字符, 字符从ASCII码来说是大于数字的. (什么是ASCII码) (大家只要知道我们比较的时候都用相同类型的比较就可以! 看起来象数字的字符, 我们用"乘以1"或者"除以1"或者"加上/减去0"都可以让它变成数字)
所以最终的函数就是:
=IF(AND((RIGHT(LEFT(A18,4),1)+RIGHT(LEFT(A18,9),1))>(RIGHT(LEFT(A18,17),1)*RIGHT(LEFT(A18,21),1)),RIGHT(LEFT(A18,20),1)*1>5),"Bingo","Gosh")
结果是 "Gosh" (因为第19位是1, 比5小):
http://hiphotos.baidu.com/cunqiu/pic/item/b2b7d0a221987f93cbefd0ce.jpg

加载中…