有一列数字,可能正数也可能是负数,有可能有小数,要怎么计算这列数字中十位数为5的数量有多少个?
一、按示例情况,数字均为整数
公式如下:
=SUM(--(MID(A1:A6,LEN(A1:A6)-1,1)="5"))
数组公式,Ctrl+Shift+Enter三键结束。
二、公式解析
LEN(A1:A6)-1,需要确定的是十位数字,它是倒数第二位,但是MID函数是正数的,这个公式就是得到数字的长度,向左侧一位就是十位数字。
用MID函数将十位数字提取出来,判断它是否等于“5”,如果是会返回TRUE,如果不是会返回FALSE。
这里需要提示的是,MID函数是文本函数,其结果是文本,因此等于号右侧的5也应是文本型,要用双引号包起来。然后用减负法将TRUE转换成数值1,FALSE转换成数值0,最后用SUM函数将结果累加起来,就得到了十位是5的数字个数。
三、如果数字有小数
如果数字中有小数,只需要确定小数点的位置,再减2就是十位数字,公式这样写:
=SUM(--(MID(A1:A6,FIND(".",A1:A6&".")-2,1)="5"))
数组公式,Ctrl+Shift+Enter三键结束。
FIND(".",A1:A6&".")-2,是查找数字中小数点的位置,再-2就是十位数字的位置了,其中&"."是给所有数字后面都加上小数点,这样FIND函数的返回结果就不会出现报错的情况,它返回的是第一个小数点的位置,对小数来讲并不影响结果正确性。
四、数字小于10
情况又复杂一些,数字不仅有小数,还有的数字是一位,那样话,FIND(".",A1:A6&".")-2返回0,MID函数就会报错了。好在这种情况肯定不符合题目要求,用IFERROR函数将它直接设置为0就好了,公式这样写:
=SUM(--(IFERROR(MID(A1:A6,FIND(".",A1:A6&".")-2,1)="5",0)))
数组公式,Ctrl+Shift+Enter三键结束。
五、如果有空单元格
情况再复杂一些,数字不仅有一位数字、小数,还有空单元格,那样话,FIND(".",A1:A6&".")-2对空单元格就会返回-1,这与第四种情况一位数字类似,用IFERROR函数即可,公式也是相同的。
六、负数有效吗
测试一下,以上公式在数据中有负数时,均能正常计算出需要的计数结果。