2024年6月10日发(作者:)

一、活“0”活现

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

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

公式:

=SUMPRODUCT(A1:A10+0)

或者:

=SUMPRODUCT(A1:A10-0)

解析:初级用户会觉得+0,-0不就等于没有增加,没有减少嘛,为何要这样

呢?是啊,要的就是这个效果,既要改变原数据的性质(文本转变为数值),

又要准确计算,所以只有用+0,-0,这一“+”或“-”符号就是改变原数据的性质

的。这一带符号的0犹如一个“小石头”,从后面抛出去将昏睡中的“大石头”

(数字)砸醒。

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

(二)“0”嶺先锋

例①、如:单元格A1中输入数字123(15位以下,文本或数

值型均可)要将这个数的每一位相加,公式:

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

解析:因单元格字符串长度只有14位提取长度为1至256位的长度,所以从

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。

三、“0”补队员

①单元格A1输入数字123,如何将单元格内数字按顺序去重。

公式:

=MID(SUM((0&MID(A1,SMALL(FIND(ROW($1:$10)-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

五、隐居山“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)