查看: 8334|回复: 6
打印 上一主题 下一主题

[电脑技巧] “0”活多变的函数公式与格式

[复制链接]
跳转到指定楼层
1#
发表于 2011-5-23 08:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
21世纪教育网微视频制作招聘启事

E氏函数家族中的“0”也真像小朋友所说的那样表示什么也没有吗?不然,0的活用与不用蕴藏着很多意想不到的玄机。到底有怎样的玄机呢?那我就0机一动开处方,虽然不算什么0当妙药”,闲话少说,E切从0开始,一起来看看0牙利齿吧!

一、活“0”活现

(一)简单文本求和中0的作用(+0-0

例子:将AA1:A10的数字相加,其中可能还有文本型的数字也需要相加。公式:

=SUMPRODUCTA1:A10+0

或者:

=SUMPRODUCTA1:A10-0

解析:初级用户会觉得+0,-0不就等于没有增加,没有减少嘛,为何要这样呢?是啊,要的就是这个效果,既要改变原数据的性质(文本转变为数值),又要准确计算,所以只有用+0,-0,这一“+”或“-”符号就是改变原数据的性质的。这一带符号的0犹如一个“小石头”,从后面抛出去将昏睡中的“大石头”(数字)砸醒。

参考文章:文本转数值的十一种方法(百度一下可查询到)

(二)“0”嶺先锋

例①、如:单元格A1中输入数字1230456857921315位以下,文本或数值型均可)要将这个数的每一位相加,公式:

=SUM(--(0&MID(A1,COLUMN(1:1),1)))

解析:因单元格字符串长度只有14位提取长度为1256位的长度,所以从15位开始,只能提取到空值。效果如下:

=SUMPRODUCT(--(0&{"1","2","3","0","4","5","6","8","5","7","9","2","1","3","",……,""}))

前面补0后的效果如下:

=SUMPRODUCT(--{"01","02","03","00","04","05","06","08","05","07","09","02","01","03","0",……,"0"})

此时没有空值,只有14个文本数字和文本0,前面加2个负号后,转化为数值,看效果:

=SUMPRODUCT({1,2,3,0,4,5,6,8,5,7,9,2,1,3,0,……,0})

没有空值,且全部为数值就可以相加了,结果为56

例②、单元格A1输入:123大理789,要将这个单元格的每一位数字相加,公式:

=SUMPRODUCT(--(0&MIDB(A1,COLUMN(1:1),1)))

与上例不同的是,MIDB会将每个双字节(如汉字就是双字节)字符按2计数,否则,函数MIDB会将每个字符按1计数。当只提取1个字节时,遇到汉字(双字节),只能提取到半个汉字(也就是空值),效果如下:

=SUMPRODUCT(--(0&{"1","2","3"," "," ……,""}))

0&后填补空值。

二、脱胎换骨—化“文”为“0

单元格A1输入123abcABC789,要将这个单元格的每一位数字相加,公式:

=SUMPRODUCT(--TEXT(MID(A1,COLUMN(1:1),1),"0;;0;\0"))

解析:由于字符串中有“abcABC”,是单字节字符,所以不能象上例那样用MIDB提取半个汉字的办法来处理。此时,我们仍用MID来提取的基础上,再请出“霸道,聪明”的TEXT函数,将非数字字符强行改为0,若为数值则不变。条件参数"0;;0;\0"中第一个0神通广大,代表了除0之外的任意正整数,也就是假0(是通配数值的0),第二个则是“苍蝇嘴巴狗鼻子—真0”,第三个0是强行做“变性”手术后的0

教育论文放心发表
2#
 楼主| 发表于 2011-5-23 08:23 | 只看该作者
21世纪教育网微视频制作招聘启事
三、“0”补队员
①单元格A1输入数字12378945600123,如何将单元格内数字按顺序去重。
公式:
=MID(SUM((0&MID(A1,SMALL(FIND(ROW($110)-1,A1&5^19),ROW($1:$10)),1))/10^ROW($1:$10))&"00",3,COUNT(FIND(ROW($1:$10)-1,A1)))
或者:
=MID(SUM(MID(A1&56^7,SMALL(FIND(ROW($1:$10)-1,A1&56^7),ROW($1:$10)),1)/10^ROW($1:$10))&0,3,COUNT(FIND(ROW($1:$10)-1,A1)))
解析:
“(0&MID(A1,SMALL(FIND(ROW($1:$10)-1,A1&5^19),ROW($1:$10)),1))”中,前面补0,是为了填补空值,
这里不再赘述,式子:SUM((0&MID(A1,SMALL(FIND(ROW($1:$10)-1,A1&5^19),ROW($1:$10)),1))/10^ROW($1:$10))&"00"中&”00”的作用有两个,一是防止计算出的0在最后被忽略;二是单元格中仅输入一个或多个0时,最后能提取到一个0。
四、忘我(“0”)牺牲
①如:单元格A1:A5中有字符串,也有文本数字。
01
03
0
#VALUE!
大理789
问题:统计A1:A5中非0数字(非0文本型数字和数值都算)有几个?
数组公式:
=COUNT(0/A1:A5)
解析:
由于0和文字不能做除数,我们将违背这一原理,把A1:A5作为除数,让0和文字出现错误值。效果:
{0;0;#DIV/0!;#VALUE!;#VALUE!}
按我兄弟顺溜的话来说,让他们(0和文字)都死球。这活下来的“英雄”就是我们要数的“人”(非0数字个数)了。于是我们让SUM,SUMPRODUCT,ISERR,ISERROR,ISNUMBER等几位大侠先“下岗”,只聘请数数高手“COUNT”大侠。
=COUNT({0;0;#DIV/0!;#VALUE!;#VALUE!})
=2
21世纪高考资源频道隆重上线
3#
 楼主| 发表于 2011-5-23 08:24 | 只看该作者
21世纪教育网微视频制作招聘启事
五、隐居山“0”
如单元格A2中输入字符串”☯ABC❀wshcw中国云南大理abc♦OWY♥Excelhome☀”
问题:
如何提取汉字:"中国云南大理"
公式:
=MID(LEFT(A2,MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"))),MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"),),99)
没有用简写的原公式:
=MID(LEFT(A2,MATCH(0,0/(MID(A2,COLUMN(2:2),1)>="吖"))),MATCH(0,0/(MID(A2,COLUMN(2:2),1)>="吖"),0),99)
解析:
1、公式中“0/(MID(A2,COLUMN(2:2),1)>="吖")”由于汉字最小是"吖",只要大小等于"吖",就说明它是汉字,这部分的作用是将小于“吖”的字符经判断后作为分母(分母为0),继而出错(也就排除了小于“吖”的部分,换句话说,也就是牺牲非0的字符),由于分子为0,继而赢得汉字演变为0的胜利。
2、MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"))这部分是定位最后一个汉字的位置,值得注意的是:前一个英文“,”前省略了一个0,作用是定位最后一个0的位置。
3、MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"),)这部分是定位最前一个汉字的位置,值得注意的是:最后一个反括号前“)”前省略了一个0,作用是定位最前一个0的位置。
MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"))与MATCH(,0/(MID(A2,COLUMN(2:2),1)>="吖"),)看上去只有一逗(“,”)之差,但“差以毫厘,谬以千里”。前者:目标远大,把潜力发挥到极限,后者因被眼前的”,”号所诱惑,目标只定位在眼前,目光短浅。这函数也象人生一样,只有小智慧与大智慧的结合,才能使函数家族兴旺发达。
六、居高“0”上(0次方的用法)
例A2:A7输入:
字符串
bbbccew-58人LK民
AYUBMMM主人123965
ABCR
(空白)
lBMMM主人-1
mc76yk 中国
问题:要将A2:A7的单元格数据汇总求和。
公式:
=SUM(-TEXT(MID(A2:A7&"@",COLUMN(1:1),MMULT(1-ISERR(-MID(A2:A7&"a1",COLUMN(1:1),2)),ROW(1:256)^0)),"-0%;0%;0;!0"))
解析:
1、先算出每个单元格含有的数字个数,再按这个个数分别逐个提取。
2、公式中:MMULT(1-ISERR(-MID(A2:A7&"a1",COLUMN(1:1),2)),ROW(1:256)^0)就是算出每个单元格含有的数字个数,那么” ^0”为何爬得如此高呢?这是因为ROW(1:256)^0)是常量数组{1;……;1;1}的缩写。是序列数1到256的0次幂,也就是256个1的数组。这0次方的妙用是E友对EXCEL不断开拓创新的结果。
21世纪高考资源频道隆重上线
4#
 楼主| 发表于 2011-5-23 08:24 | 只看该作者
21世纪教育网微视频制作招聘启事
七、“0”的伪装(TRUE,FALSE)
例①A1单元格是785,B1单元格是358017。如何从B1中将A1的7、8、5替换掉,在C1得出301
=SUM(MID(0&B1,LARGE(ISERR(FIND(MID(B1,COLUMN(1:1),1),A1))*COLUMN(1:1),COLUMN(1:1))+1,1)*10^COLUMN(1:1))/10
公式分析:
1、FIND(MID(B1,COLUMN(1:1),1),A1)
=FIND(MID(B1,{1,2,3,4,5,6,7,……,256},1),A1)
=FIND({"3","5","8","0","1","7","",……,""},785)
={#VALUE!,3,2,#VALUE!,#VALUE!,1,……,1}
用MID分解字符串,得到一个数组,大家已经很熟悉了,由B1单元格数字得到一个数组:{"3","5","8","0","1","7","",……,""}。然后用FIND查找数组中每个数据在A1单元格数字中的位置,先查找"3",A1中没有3,那么结果是错误值#VALUE!,接下来找"5",在A1单元格数字的第3个位置,结果便是3,再找"8",结果是2,依次找下去,当查找空值""时,结果都是1,这可以理解为用FIND找空值,空值永远在字符串第1个位置。
2、ISERR(FIND(MID(B1,COLUMN(1:1),1),A1))
=ISERR({#VALUE!,3,2,#VALUE!,#VALUE!,1,……,1})
={TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,……,FALSE}
我们又遇到一个信息函数ISERR,它是检测一个数据是否为错误值(#N/A以外),如果是错误值返回TRUE,不是错误值返回FALSE,形象地理解为:错的就是对的,对的成了错的,真是“真亦假来假亦真,假亦真来真亦假”。
3、ARGE(ISERR(FIND(MID(B1,COLUMN(1:1),1),A1))*COLUMN(1:1),COLUMN(1:1))+1
这一步是算出查找不到的第1至256个最大值。运行后的效果:
{8,7,4,3,1,……,1}
代入公式:
=SUM(MID(0&B1,{8,7,4,3,1,……,1},1)*10^COLUMN(1:1))/10
进一步提取得到:
=SUM({"1","0","3","0"……"0"}*10^COLUMN(1:1))/10
再运算:
=SUM({10,0,3000,0,……,0})/10
=301
例②A2:A7单元格输入:
21世纪高考资源频道隆重上线
5#
 楼主| 发表于 2011-5-23 08:25 | 只看该作者
21世纪教育网微视频制作招聘启事
十一、眼见为虚,验证为实(单元格格式简单运用)
单元格格式的设置顺序excel默认:"正数;负数;零;文本",中间用英文分号相隔。并且还可以设置颜色(颜色是TEXT函数不具备的),如单元格格式:"[红色]我;[绿色]爱;[黄色]\exc\el;[蓝色]\ho\m\e"设置后分别输入"正数;负数;零;文本"试试,是不是很有趣哦!输入正数时显示红色的"我";负数时显示绿色的"爱";零时显示黄色的"excel";文本时显示蓝色的"home",显示结果不是真实存在的,是你的眼睛在欺骗你,它并没有改变其本身的值或字符,所以眼见为虚,验证为实。是每个excel 人所必须弄清的。
1、单元格格式中的"0",往往是通配数字。如:
输入19980823,要显示为日期格式,则单元格格式:"0-00-00"(即月份和日期都是两位数,剩下的位数为年份),单元格格式也可以写成:" 0年00月00日"
2、单元格格式中的隐藏大法
①隐藏0值,单元格格式:"[=]g"
②隐藏负值:"G/通用格式;"
③隐藏小于0的值:"G/通用格式;;"
④隐藏正值:" ;-G/通用格式;0"
⑤隐藏0值和正值:" ;-G/通用格式"
⑥隐藏数值:" ;;;@"(仅显示文本)
另外,经测试,隐藏数值的单元格格式还可以写成:""""(只输入""),但缺陷是当输入负值时会显示"-"号没有完全隐藏负值。
⑦隐藏文本:" [<>]G/通用格式;;0;" ,也可以:"G/通用格式;-G/通用格式;0;"
⑧全部隐藏:";;;"
3、改变默认设置法:
例如:
学生成绩<60的为不及格,<85的为及格,>=85的为优秀,则单元格格式为:" [<60]不及格;[<85]及格;优秀",单元格格式还可以再加上颜色:" [红色][<60]不及格;[黄色][<85]及格;[蓝色]优秀",还可以按照条件只设置颜色,不显示等级,单元格格式:" [红色][<60];[黄色][<85];[蓝色]",如果中间再加一个等级,>=70且<85的为良,单元格格式就无能为力了,因为单元格格式最多能将数值分为三段,第四段是文本格式.
4、占位符("\"和"!")
是指EXCEL规定有特殊含义或者说有特殊用途的字符而言的,当在单元格格式中(或者说在TEXT条件参数中)输入这些字符时,EXCEL赋予“她”特殊使命,当不需要“她”完成特殊使命,只作“平民”身份出现时,就用占位符(”\”和”!”)命令“她”,使“她”显示出本来面目。具有特殊使命的字符有:
A星期
B佛历年份
D日期
E科学计数,小"e"是年份(使用时要注意区分)
H小时
M月份和分钟
S秒
Y年份
@文本
#数字
0数字
如:A1:A3单元格中都输入40000(日期:2009-7-6的序列数),单元格格式分别设置为:e,m,d,是不是分别显示为:2009(年),7(月),6(日)了,如果要将“她”还原为“平民”身份,就分别用\e,\m,\d(用!e,!m,!d也是一样的),结果就显示字母本身了。
如上述,学生成绩<60的为不及格,<85的为及格,>=85的为优秀,单元格格式:” [<60]不及格;[<85]及格;优秀”,就是人为的定义格式,当然还可以” [>=85]优秀;[<60]不及格;及格”和” [>=85]优秀;[>=60]及格;不及格”这些格式的顺序由用户自己定义,改变EXCEL的默认设置,也就是我们EXCEL人自己赋予“她”的用途。由于这些字符EXCEL没有特殊含义或者说没有特殊用途,所以不需要用占位符。
EXCEL博大精深,仅就一个0,也只写了冰山一角,如果没有养成独立思考习惯,平时又不知道积累知识点,只会发一堆废铁(贴),缺乏探索创新,是永远成不了好钢的。在困难面前誓不低头,世上才有了徒手攀岩的“蜘蛛人”,作为合格的EXCEL人应该具备“蜘蛛人”应有的品质,面对技术难题,从0开始,不畏艰险,敢于“亮剑”,勇攀“E”峰。只要坚持,坚持,再坚持,才能享受到“举头红日白云低”的成功喜悦。
21世纪高考资源频道隆重上线
6#
发表于 2011-10-28 15:33 | 只看该作者
21世纪教育网微视频制作招聘启事
例A2:A7输入:
字符串
bbbccew-58人LK民
AYUBMMM主人123965
ABCR
(空白)
lBMMM主人-1
mc76yk 中国
问题:要将A2:A7的单元格数据汇总求和。
公式:
=SUM(-TEXT(MID(A2:A7&"@",COLUMN(1:1),MMULT(1-ISERR(-MID(A2:A7&"a1",COLUMN(1:1),2)),ROW(1:256)^0)),"-0%;0%;0;!0"))
解析:
1、先算出每个单元格含有的数字个数,再按这个个数分别逐个提取。
2、公式中:MMULT(1-ISERR(-MID(A2:A7&"a1",COLUMN(1:1),2)),ROW(1:256)^0)就是算出每个单元格含有的数字个数,那么” ^0”为何爬得如此高呢?这是因为ROW(1:256)^0)是常量数组{1;……;1;1}的缩写。是序列数1到256的0次幂,也就是256个1的数组。这0次方的妙用是E友对EXCEL不断开拓创新的结果。
21世纪高考资源频道隆重上线
7#
发表于 2012-3-2 20:29 | 只看该作者
21世纪高考资源频道隆重上线
您需要登录后才可以回帖 登录 | 注册

本版积分规则

免责声明 | 帮助中心 | 联系我们 | 广告合作 | 意见和建议 | 友情链接 | 站点地图

地址:深圳市龙岗区横岗街道横岗社区力嘉路108号B栋B6 邮编:518000
© 2006-2024版权所有©深圳市二一教育科技有限责任公司 21世纪教育网 粤ICP备11039084 粤教信息(2013)2号

工作时间: 9:00a.m.-6:00p.m. 
服务电话: 4006379991

网络支持:深圳市二一教育科技有限责任公司