蒲公英 - 制药技术的传播者 GMP理论的实践者

搜索
楼主: Dvencent
收起左侧

Excel四舍六入五成双纯公式非宏版

  [复制链接]
药徒
 楼主| 发表于 2019-2-27 21:49:17 | 显示全部楼层
USP竟然改成四舍五入了
回复

使用道具 举报

发表于 2019-2-27 23:24:11 | 显示全部楼层
回复

使用道具 举报

药徒
 楼主| 发表于 2019-2-28 08:09:44 | 显示全部楼层
“四舍五入”,该规定的差异可能导致对结果的判定的差异,如某药物的杂质限度为“≤0.0002%”,测定结果为0.00025%,按照USP36规定,舍入后结果为0.0003%,判定为不符合规定;而按照ChP规定,舍入后结果为0.0002%,判定为符合规定。
参考USP36-NF31
回复

使用道具 举报

药生
发表于 2019-2-28 08:35:33 | 显示全部楼层
好高端的样子
回复

使用道具 举报

发表于 2019-2-28 12:47:14 | 显示全部楼层
好用 谢谢高手分享
回复

使用道具 举报

发表于 2019-2-28 22:52:23 | 显示全部楼层
数据有三个以上的小数位数,如要取两个小数点修约自行写了个excel公式:=IF(MID(A1-INT(A1),5,1)/1<=5,MID(A1-INT(A1),1,4)+INT(A1)+MOD(MID(A1-INT(A1),4,1),2)/100,IF(MID(A1-INT(A1),5,1)/1>5,MID(A1-INT(A1),1,4)+INT(A1)+0.01))
回复

使用道具 举报

发表于 2019-3-1 08:53:54 | 显示全部楼层
用着很不错啊1多谢啊
回复

使用道具 举报

药徒
发表于 2019-3-1 12:24:49 | 显示全部楼层
感谢分享,试过了,特别好用
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-1 12:49:33 | 显示全部楼层
如果小数点保留位数固定,可以将B2替换成相应的数字,可以省去设置B2的步骤,此处增加了B2的目的就是因为怕小数点保留位数有变化,需要手动修改公式里的数据,麻烦,也容易出错。例如:保留2位小数点
=if((A2*100-0.5)/int(A2*100)=1,int(A2*100)+mod(int(A2*100),2),if(A2*100-int(A2*100)>0.5,int(A2*100)+1,int(A2*100)))/100,整个公式里就一个变量了
查找替换就行
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-1 12:53:00 | 显示全部楼层
还有末尾是5的情况“A2*B2-int(A2*B2)=0.5”这样判断咋就不行呢,逻辑上应该完全没问题啊,有没有高手给解释一下,太邪门了
回复

使用道具 举报

发表于 2019-3-1 16:16:30 | 显示全部楼层
以修约A1中的数据为例:
保留至个位:=IF(MOD((A1-0.5),2)=0,A1-0.5,ROUND(A1,0))
保留1位:=IF(MOD((10*A1-0.5),2)=0,A1-0.05,ROUND(A1,1))
保留2位:=IF(MOD((100*A1-0.5),2)=0,A1-0.005,ROUND(A1,2))
保留3位:=IF(MOD((1000*A1-0.5),2)=0,A1-0.0005,ROUND(A1,3))
以此类推。
回复

使用道具 举报

发表于 2019-3-1 23:24:03 | 显示全部楼层
凛冬将至 发表于 2019-3-1 16:16
以修约A1中的数据为例:
保留至个位:=IF(MOD((A1-0.5),2)=0,A1-0.5,ROUND(A1,0))
保留1位:=IF(MOD((10* ...

如果数据是9.8451,修约为两个小数,使用公式=IF(MOD((100*A1-0.5),2)=0,A1-0.005,ROUND(A1,2))会等于9.85而不是9.84!
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-2 14:31:15 | 显示全部楼层
本帖最后由 Dvencent 于 2019-3-2 14:32 编辑
汪天雄 发表于 2019-3-1 23:24
如果数据是9.8451,修约为两个小数,使用公式=IF(MOD((100*A1-0.5),2)=0,A1-0.005,ROUND(A1,2))会等于9.8 ...

9.8451,修约为两个小数,结果应该为9.85啊
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-2 14:45:46 | 显示全部楼层
凛冬将至 发表于 2019-3-1 16:16
以修约A1中的数据为例:
保留至个位:=IF(MOD((A1-0.5),2)=0,A1-0.5,ROUND(A1,0))
保留1位:=IF(MOD((10* ...

竟然有round函数
回复

使用道具 举报

药徒
发表于 2019-3-2 14:52:51 | 显示全部楼层
这么复杂的公式写出来,难道不需要解释下原理吗
回复

使用道具 举报

发表于 2019-3-2 17:16:12 | 显示全部楼层
厉害厉害,高大上的样子
回复

使用道具 举报

发表于 2019-3-2 20:15:59 | 显示全部楼层
Dvencent 发表于 2019-3-2 14:31
9.8451,修约为两个小数,结果应该为9.85啊

是我理解错误了,之前我写的公式就存在缺陷,还是这个带有“round”公式比较简洁设计巧妙。
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-3 13:34:55 | 显示全部楼层
凛冬将至 发表于 2019-3-1 16:16
以修约A1中的数据为例:
保留至个位:=IF(MOD((A1-0.5),2)=0,A1-0.5,ROUND(A1,0))
保留1位:=IF(MOD((10* ...

这个公式貌似还是存在Bug
回复

使用道具 举报

药徒
 楼主| 发表于 2019-3-3 15:50:58 | 显示全部楼层
0位小数:=if((A2-0.5)/int(A2)=1,int(A2)+mod(int(A2),2),round(A2,0))
1位小数:=if((A2*10-0.5)/int(A2*10)=1,int(A2*10)+mod(int(A2*10),2),round(A2*10,0))/10
2位小数:=if((A2*100-0.5)/int(A2*100)=1,int(A2*100)+mod(int(A2*100),2),round(A2*100,0))/100
3位小数:=if((A2*1000-0.5)/int(A2*1000)=1,int(A2*1000)+mod(int(A2*1000),2),round(A2*1000,0))/1000
4位小数:=if((A2*10000-0.5)/int(A2*10000)=1,int(A2*10000)+mod(int(A2*10000),2),round(A2*10000,0))/10000
A2为需要处理的数据
这回应该没问题了,等测试完了再补充吧
回复

使用道具 举报

发表于 2019-3-4 09:09:55 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

×发帖声明
1、本站为技术交流论坛,发帖的内容具有互动属性。您在本站发布的内容:
①在无人回复的情况下,可以通过自助删帖功能随时删除(自助删帖功能关闭期间,可以联系管理员微信:8542508 处理。)
②在有人回复和讨论的情况下,主题帖和回复内容已构成一个不可分割的整体,您将不能直接删除该帖。
2、禁止发布任何涉政、涉黄赌毒及其他违反国家相关法律、法规、及本站版规的内容,详情请参阅《蒲公英论坛总版规》。
3、您在本站发表、转载的任何作品仅代表您个人观点,不代表本站观点。不要盗用有版权要求的作品,转贴请注明来源,否则文责自负。
4、请认真阅读上述条款,您发帖即代表接受上述条款。

QQ|手机版|蒲公英|ouryao|蒲公英 ( (京)-非经营性-2014-0058 京ICP证150354号 京ICP备14042168号-1 )

GMT+8, 2024-3-29 17:36

Powered by Discuz! X3.4运维单位:苏州豚鼠科技有限公司

Copyright © 2001-2020, Tencent Cloud.

声明:蒲公英网站所涉及的原创文章、文字内容、视频图片及首发资料,版权归作者及蒲公英网站所有,转载要在显著位置标明来源“蒲公英”;禁止任何形式的商业用途。违反上述声明的,本站及作者将追究法律责任。
快速回复 返回顶部 返回列表