|
我对大头版主公式的解释
真是深奥奇妙的公式。仰慕。
我对大头版主公式的解释:原公式:
=MID(SUM(MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)/10^ROW($1:$10)),3,MIN(6,COUNT(FIND(ROW($1:$10)-1,A1))))
一、A1&1/17="755087.391270.0588235294117647",1/17是16位循环小数, 这样连接,保证0-9各个数字都能查到,不至于出错。
二、ROW($1:$10)-1,生成0-9的数组,作为FIND的第一个参数。
三、FIND(ROW($1:$10)-1,A1&1/17)查找0-9各个数字在A!&1/17的位置,
={4;10;11;8;24;2;28;1;5;9}
四、SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10))依次排列这些数字在A1&1/17从前到后的位置。
={1;2;4;5;8;9;10;11;24;28}
五、MID(A1&1/7,SMALL(FIND(ROW($1:$10)-1,A1&1/17),ROW($1:$10)),1)=MID(A1&1/7,{1;2;4;5;8;9;10;11;24;28},1),很明显,是把A1&1/17中的从前向后不重复的位置。0-9的数字一些一个提取出来。={"7";"5";"0";"8";"3";"9";"1";"2";"8";"4"}
六、10^ROW($1:$10),就是10的1-9次幂{10;100;1000;10000;100000;1000000;10000000;100000000;1000000000;10000000000}
七、用这个数组做"7";"5";"0";"8";"3";"9";"1";"2";"8";"4"做除数,文本也转化成数字,分别得到{0.7;0.05;0;0.0008;0.00003;0.000009;0.0000001;0.00000002;0.000000008;0.0000000004},
八、用sum函数加起来,各个数字的位置刚好错开。=0.7508391284,这就成了MID函数的第一参数:文本字符,
九、MID的第二个参数是公式中的3,因为有一"0.",所以从第三位提取。
十、Mid的最后一参数是提取几位,要求是6位,可是为什么用MIN(6,COUNT(FIND(ROW($1:$10)-1,A1)))这个公式,这 个公式表示最大取6位,少于6位,有几位取几位,COUNT(FIND(ROW($1:$10)-1,A1))中FIND(ROW($1:$10)-1,A1))查找 A1中0-9各数第一次出现的位置,如果没有,返回错{4;10;11;8;#VALUE!;2;#VALUE!;1;5;9},
=MID(0.7508391284,3,6),结果为750839
斗胆诠释大头版主的公式,很惶恐,望版主见谅。
[ 本帖最后由 swyrlbq 于 2011-2-14 17:15 编辑 ] |
|