lukelu朋友提了个很好的问题:“公式思路是怎么来的?”。 原贴:[讨论]数组公式的思路? 这个问题我想大家在学习函数时都会闪现过吧?呵呵,我也是。通过这几年的论坛学习,我觉得以下几点与之相关: 1、看论坛精华,吸取公式闪光点。花几分钟看一百条一看就懂的公式是没有用的,但用几个小时的时间去理解一条难懂的公式,就能获取公式的思路,以及思路中的闪光点,这些闪光点正是体现公式的魅力所在,有时会让你禁不住拍手叫好! 2、思路的宽窄也与撑握的函数范围有关。试想如果你只知道Sum、IF这几个函数,你能处理“文本和数字的分离”这样的问题吗?常言道“朋友多了路好走”,在这里则是“函数多了思路宽”。 3、否定再否定是创新思路的源泉,这点是最重要的。大多时侯我们在想问题时往往钻进死胡同去,所以我们要尽量“把思维跳出去”来找解决方法,找方法时有多种思维方法,如“特点法”、“逆向法”、“大局法”等。在用这些方法时要不断地否定自己前面的思路,这才有可能获得更多的思路,从而选择更符合我们需求的那一条路走。 如此例:把右边数字从文本中分离出来 总体思路:找到数字个数,然后通过取字窜函数获得,下面是我想到一种就写一个了,并无优劣顺序,视情况而采用。 其中找到数字个数是思路关键。那怎么找数字呢?我们用“特点法”从所求数字的性质入手。 性质1:都是由0-9共10个数字组成,从而能想到用方法1这样的Substitute替换法。 =RIGHT(A2,SUM(LEN(A2)-LEN(SUBSTITUTE(A2,{0,1,2,3,4,5,6,7,8,9},)))) (A2为字符窜单元格,下同) 性质2:所求数字均位于右边,找到起始位置就好办了,从而能想到用方法2这样的Find查找法。 =MID(A2,FIND({0,1,2,3,4,5,6,7,8,9},A2&1234567890),100) (X 此公式有误,应改为下面的) =MID(A2,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&1234567890)),100) 性质3:数字位数越多则数字越大,从而能想到用方法3这样的Lookup取尾法。 =LOOKUP(9E+307,--RIGHT(A2,ROW(1:100)),RIGHT(A2,ROW(1:100))) 性质4:数字进行四则运数不会出错,而文字则会出错,从而能想到用方法4这样的Count排错法。 =RIGHT(A2,COUNT(-MID(A2,ROW(1:100),1))) 性质5:数字与字母能组成一个单元格地址,但数字0和空字符不好区分,所以我们转用“逆向法”去找字母个数,从而能想到用方法5这样的Indirect引用法。 =MID(A2,COUNT(AREAS(INDIRECT(MID(A2,ROW(1:100),1)&1)))+1,100) 性质6:数字在Excel中的排位比字母小,但空字符的排位也比字母小,所以我们也转用“逆向法”去找字母个数,从而能想到用方法6这样的字符比较法。 =MID(A2,SUM(--(MID(A2,ROW(1:100),1)>="a"))+1,100) ...... 好了,我暂时就写这些吧,大家可能都跃跃欲试了,方法7、方法8......就留给大家继续吧,呵呵。 这是本文的附件:
AkT98as9.zip
(8.48 KB, 下载次数: 30)
[此贴子已经被作者于2007-4-26 22:49:46编辑过] |