Excel表格中,在C列设置这个公式:C4=IF(COUNTIF($D$2:$D$19,A4),"在里面","不在里面")现在问题是如下图:在B5 B10 B11 B16分别输入以9开头的数据后,该公式产生了错误的答案,请问,这个东东是什么原因造成的,如何改才可以避免纠正错误
你的公式跟你的图示完全没关系嘛。不过不影响大家帮你发现错误,错误是因为"*",在EXCE中"?" "*"都是通配符,通配符的意思就是这个符号能代替任意一个或者多个任意字符。例如:9*0.28,那么你查找区域里面以9开头,0.28结束的所有字符串都符合你的计数。所以答案跟你的预想不一致是肯定的。
那么要处理这个问题就必须取消"*"通配符的特性,在EXCEL中,要查找*本身,需要在前面加~,即查找~*。那么公式中添加一个SUBSTITUTE函数,既SUBSTITUTE(A4,"*","~*"),具体公式如图示。
首先,你表中的D列没有数据,因此你公式里面的D2:D19是什么?是表中的B列的数据么?
其次,按照你图中C列结果的显示,你只到了17列,我怀疑你意思是不是搞反了?是不是要求输入的数据在不在A列里面?因为如果是A列的数据在不在输入数据里面的话,你应该一直拉到底拉到21列的
第三,B12应该也不在里面也是错误的
如果按照我的怀疑的话,公式按照图中的应该是C4=if(countif(A:A,B4),"在里面","不在里面")
事实证明按照我上面的公式确实得到和图中一样的结果,那么为什么会出现错误的几列,原因就在于我们的偷懒!!如果我们把*写成×就没有问题了
* 在公式中是有特别的含义的,比如9*0.28,意思只要第一个数字是9,最后四个字符是0.28,那么就代表有这个数,所以显示在里面
我这边加了个条件,比较2个单元格本身字符串的长度是否一样
C4=IF(COUNTIF(A:A,D4)*EXACT(LEN(D4),LEN(A:A)),"在里面","不在里面")
当然我估计应该还有其余更简单的公式,望其他大神给出吧,我也在学习中