返回首页
当前位置: 主页 > Excel教程 > Excel2013教程 >

Excel技巧结合思维的实例

时间:2014-09-17 00:54来源:Office教程学习网 www.office68.com编辑:麦田守望者

如何实现以下的功能:A列中有纯数字、有纯英文、也有数字英文字母混合的,现在要把不足8位的、纯英文、纯字母的全部踢掉。


        我一开始的想法是这样的:
第一步:先用Len函数,把小于8的全删掉;
第二步:用Isnumber函数,把True的全删掉;
第三步:用mid函数把每一个位分离出来,然后判断此位是不是数字,若是为1,否为0(因为不是数字,就肯定是英文字母了)。最后对结果进行求和、连乘。如果和为非零、但连乘为0就是我要的结果了。
后来群里的Zack直接用了一个公式,很轻松地实现了第三步的功能,很牛的思路,很牛的想法。
      =IF(COUNT(FIND({0,1,2,3,4,5,6,7,8,9},A1))=0,"纯英文删除","保留")
先查找A列中是否含有数字,然后统计数字的有几个,如果为0则是纯英文,非0则不是。

Sharpen来讲解下这公式的意义:(此公式的意思是在内存数组里把A1单元格的值拆分掉,每个单元格只是占一个字母或数字。然后运用find进行对他们的查找。我们可以按F9看到具体的过程,=IF(COUNT({#VALUE!,2,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!}))=0,"纯英文删除","保留")。如果拆分后的每个都是字母的话,就都查找不到,也就返回了错误。Counta是计算数值个数,有一个不返回错误也就不等于0,得到false,进而最后结果得到保留。
根据这个核心的公式,我稍微又完善了一下,用了一个If函数,把三步都综合起来了,最后结果为1,就是我想要的结果。这叫站在高手的肩膀上看世界。 
=IF(LEN(A1)>=8,IF(ISNUMBER(A1)=FALSE,IF(COUNT(FIND({0,1,2,3,4,5,6,7,8,9},A1))=0,0,1),0),0)

Sharpen觉得多if嵌套很多人看的很晕。按题目的意思是纯英文,纯数字和字符不到8位都去掉,三者应该是或者的关系。那公式也可以写成 =IF(OR(LEN(A2)<8,ISNUMBER(A2)=TRUE,COUNT(FIND({0,1,2,3,4,5,6,7,8,9},A2))=0),"删除","保留")

本篇结束。上面的公式大家可以复制后验证下。

------分隔线----------------------------
标签(Tag):excel excel2007 excel2010 excel2013 excel2003 excel技巧 excel教程 excel实例教程
------分隔线----------------------------
推荐内容
猜你感兴趣