加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

find与left函数的运用

(2010-10-18 11:50:48)
标签:

杂谈

今天我们讲两个函数: "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)   (为什么要减2? 因为要Find找第二个"I"的结果是包含第一个"I"和第二个"I"的位数的, 所以要减掉). 结果是:

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

0

阅读 收藏 喜欢 打印举报/Report
前一篇:制作水印
后一篇:英语时态
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有