本帖最后由 滴答滴 于 2014-8-13 21:42 编辑
思路一:常规思路- =IF(A2<"",A2+100*(A2>0),TEXT(LEFT(A2,FIND("/",A2)-1),"0;;-100")+100&"/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100)思路
复制代码 思路二:- =TEXT(INT(SUBSTITUTE(A2,"/",".")),"0;;-100")+100&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码 缺陷公式- =TEXT(SUBSTITUTE(A2,"/",".")-49%,"0;-100")+100&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码 思路三:- =LEFT(A2,FIND("/",A2&"/")-1)+(-LEFT(A2)<0)/1%&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码- =INT(SUBSTITUTE(A2,"/","."))+(-LEFT(A2)<0)/1%&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码 思路一:常规思路
1、单独数字的,如果非0加100,0则不加,逻辑简化为数字加100,0的话则加上0,得A2+100*(A2>0),关于数字的判定,这里除了单独的数字外,其它的类似分数的写法实际都是文本。
所以我们用A2和空文本比较,小于空文本的即为数字,以此来简化条件,代替COUNT,ISNUMBER,TYPE等函数判定。
2、剩余的就是分别取"/"左右两边的内容处理后,再进行连接。这里的处理,我们把0转化为-100,然后加上100之后,就又变成了0。有的同学也用到了这样的处理,非常好。
思路二:
1、把单独的数字一起处理,将源数据转化成小数取整后,然后利用上一公式相同的处理手段。
=TEXT(SUBSTITUTE(A2,"/",".")-49%,"0;-100")+100 这种是我做了简化,省掉一个INT
本来是可以减去0.5的,但是因为0-0.5=-0.5,text舍入后会得到-1,这样+100后得99,结果出现了偏差。所以只能用小于0.5的数0.49即49%。
但是遇到极限情况,"/"后面的数字为99X的时候,"/"前面的数字处理后会多加1。所以0.5这个数字无可取代。
2、连接上后面的部分。这里把"/"写到if里,if的参数省略时,相当于空单元格,用于数学运算时相当于0,用于文本连接是相当于假空。
思路三:
1、还是把单独的数字一起处理,这里利用给原数据&"/",再查找定位,再截取,防止出错。下面的公式的取值,跟上面的思路一样,小数取整。
2、关于+100的处理这里比较巧妙。判断首位是否为0,这里的判定用-LEFT(A2)<0,所有的正整数取负运算后都小于0,然后得到的逻辑值TURE或者FALSE除以1%
逻辑值在参与数学运算时等同于1和0。
3、与上面思路后面一样的处理方法。
总结详见下图或者下载附件文件。评语和评分见附件
|