Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 滴答滴

[习题] [已开]201401函中课前练习11:生成新报价

[复制链接]
发表于 2014-8-10 22:48 | 显示全部楼层
  1. =IF(--LEFT(A2)>0,INT(SUBSTITUTE(A2,"/","."))+100,0)&IF(TYPE(A2)=1,"","/"&IF(RIGHT(A2,2)="/0",0,100+MID(A2,FIND("/",A2)+1,5)))
复制代码

评分

参与人数 2 +3 金币 +20 收起 理由
jio1ye + 3 给力~
26759761@qq.com + 20 非常好,很有功底!

查看全部评分

回复

使用道具 举报

发表于 2014-8-11 11:44 | 显示全部楼层
=IF(A2=0,0,IF(ISERROR(FIND("/",A2)),A2+100,IF(LEFT(A2,2)="0/","0/"&SUBSTITUTE(A2,LEFT(A2,FIND("/",A2&"/")),"")+100,IF(RIGHT(A2,2)="/0",LEFT(A2,FIND("/",A2&"/")-1)+100&"/0",LEFT(A2,FIND("/",A2&"/")-1)+100&"/"&SUBSTITUTE(A2,LEFT(A2,FIND("/",A2&"/")),"")+100))))

评分

参与人数 1金币 +20 收起 理由
26759761@qq.com + 20 答案正确。截取除了left还可以mid的

查看全部评分

回复

使用道具 举报

发表于 2014-8-12 20:49 | 显示全部楼层
  1. =TEXT(SUBSTITUTE(A2,"/",".")+99.5,"[>101]0;\0")&IF(COUNT(A2),,"/"&TEXT(1+MID(A2,FIND("/",A2)+1,5)%,"[=1]\0")/1%)
复制代码

评分

参与人数 1 +3 收起 理由
lmze2000 + 3 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-8-13 21:21 | 显示全部楼层
本帖最后由 滴答滴 于 2014-8-13 21:42 编辑

思路一:常规思路
  1. =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)思路
复制代码
思路二:
  1. =TEXT(INT(SUBSTITUTE(A2,"/",".")),"0;;-100")+100&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码
缺陷公式
  1. =TEXT(SUBSTITUTE(A2,"/",".")-49%,"0;-100")+100&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码
思路三:
  1. =LEFT(A2,FIND("/",A2&"/")-1)+(-LEFT(A2)<0)/1%&IF(A2>"","/"&TEXT(MID(A2,FIND("/",A2)+1,9),"0;;-100")+100,)
复制代码
  1. =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、与上面思路后面一样的处理方法。

总结详见下图或者下载附件文件。评语和评分见附件
   
练习11总结.png

手机报价单答案解析.zip

13.56 KB, 下载次数: 37

评分

参与人数 2 +6 收起 理由
一杯清荼 + 3
air05 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-8-14 12:14 | 显示全部楼层
=IFERROR(IFERROR(--LEFT(A2,FIND("/",A2)-1)+100,0)&"/"&
IF(--MID(A2,FIND("/",A2)+1,LEN(A2)-FIND("/",A2)),MID(A2,FIND("/",A2)+1,LEN(A2)-FIND("/",A2))+100,0),IF(A2,A2+100,0))

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 20:39 , Processed in 0.257486 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表