大家好,今天有一朋友问了一个这样的问题,统计文本型数字个数,但是文本型数字长度超过了18位。他这一问,我马上想到在后面加*,结果也是失败而告终,不信大家把下面的动画看完,然后回答我,那一种解法是完美的?
看完之后大家一定会发现第3种解法最完美,第1种直接countif不准,第2种在countif第2参数后面连接一个星号*也不准了,因此大家今天我写这个文章的意义了。
公式解释 解法1:=COUNTIF($A$2:$A$5,A2) countif函数统计单元格的格个数 第1参数条件所在的区域,不支持常量数组和内存数组,只能是单元格区域引用 第2参数:条件,支持数组和单元格区域引用 超过了15位的,如果前15位一样,15位就是不同,也当作一样,=COUNTIF($A$2:$A$5,A2)这个公式的缺点。
解法2:=COUNTIF($A$2:$A$5,A2&'*') 这个公式如果缺点,就是18位是一样的,18位后不一样,也当作一样了,如果所有的数据一样就没有问题了
解法3:=SUMPRODUCT(($A$2:$A$5=A2)*1)
这个解法就解决了上面那个解法的不足。
公式=($A$2:$A$5=A2)对单元格区域$A$2:$A$5进行判断,返回{TRUE;TRUE;FALSE;FALSE} 由于SumProduct函数不支持布尔值False,True,所以用*1来让False转为0,True转为1 *1也可以用N函数代替=SUMPRODUCT(N($A$2:$A$5=A2))
好了,今天我们就学到这里,温馨提示,11月26日有一个vba初级班开新班,想学的朋友加我微信18664243619进行咨询。大家再见!
|