用SUMIF对超15位的代码进行条件求和,出错了,缘由是....

用SUMIF对超15位的代码进行条件求和,出错了,缘由是.... 

1、问题函数

有读者朋友问:编码

用SUMIF进行条件求和时,若是统计的条件是超15位的代码,就会出错,好比下图要统计D2单元格身份证号在A列出现的个数、对应B列的金额之和,spa

E9单元格公式为:blog

=COUNTIF(A2:A14,D2)it

E10单元格公式为:class

=SUMIF(A2:A14,D2,B2:B14)数据类型

公式并无错,但计算结果倒是错的!这是什么缘由?应该用什么公式?方法

2、缘由im

要弄清这个缘由,首先要从Excel的最大数字位数讲起,在Excel中,数字的最大位数15位超过15位的数字,会自动将后面的位数变为0,这一点,咱们在输入身份证号时,应该遇到过,每次输入18位身份证号,后面三位会自动变为0。解决方法时将单元格设置为文本格式再输入,或者在身份证号前加英文的'符号。统计

本文中的问题也是这个缘由。可能你们会说,A列不是已经将其设为文本格式了吗?为何仍是会将其做为数字对等呢?这应该是与Excel的特色有关,Excel并不象Power Query对数字类型有严格的要求同样,它会根据状况自动转换数据类型,好比下图,

A一、A2是文本,咱们在A3设置公式

=A1+A2

那么公式就会出错,由于文本是没法相加的。

可是,

B1和B2一样是文本(文本型的数字),B3单元格的公式仍是

=B2+B3,此公式却不会出错,Excel会自动将B一、B2自动转换为数字类型,而后相加。

于是,当遇到文本格式的身份证或编码时,Excel会自作聪明的将其转换为数字,于是数字15位之后的自动变为0,于是用COUNTIF或SUMIF统计个数或求和,其结果就会出错。

3、怎么办

解决方法:

一、在条件中后加通配符

添加通配符后,Excel就会将其视为文本

=COUNTIF(A2:A14,D2&"*")

=SUMIF(A2:A14,D2&"*",B2:B14)

二、使用SUMPRODUCT函数

=SUMPRODUCT((A2:A14=D2)*1)

=SUMPRODUCT((A2:A14=D2)*B2:B14)

提醒:

若是将统计个数的公式写为=SUMPRODUCT(A2:A14=D2),其计算结果会是零,由于公式其实是=SUMPRODUCT({FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE})

若是TRUE和FALSE若是不对其进行运算时,SUMPRODUCT不会将其视同1和0对待的,因此,须要写成=SUMPRODUCT((A2:A14=D2)*1)

相关文章
相关标签/搜索