我是做药学的,需要四舍六入五成双,可是excel是四舍五入,请问如何实现?
有下载吗?直观一点的有么。
1、按ALT+F11
Thisworkbook-插入-模块。
2、将下面代码拷贝进去。
Function TranValue(rng As Double, number As Integer) As Double
TranValue = Round(rng, number)
End Function
3、在电子表格中直接使用公式
= tranvalue(A1,1) ;然后向下拉公式既可以.
温馨提示:答案为网友推荐,仅供参考
第1个回答 2006-10-16
这样最直观:
=INT(A2)+IF(MOD(A2,1)>=0.55,1,0)
如果要保留2位小数:
=(INT(A2*100)+IF(MOD(A2*100,1)>=0.55,1,0))/100
=INT(A2)+IF(MOD(A2,1)>=0.55,1,0)
如果要保留2位小数:
=(INT(A2*100)+IF(MOD(A2*100,1)>=0.55,1,0))/100
第2个回答 2006-10-15
[转载]四舍六入五成双公式
四舍六入五成双公式对药学工作者很有用的
具体过程:
A2为需要修约的数据
B2为需要修约的位数
C2为修约结果,公式如下:
IF(((A2*10^(B2+1)-INT(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))=1,TRUNC(A2,B2),ROUND(A2,B2))
讲解:
1.1 ((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)判断需要修约的多一位上是否还有数据,如果有就返回0,没有返回1.
1.2 (MOD(TRUNC(A2*10^(B2+1)),5)=0)判断需要修约下一位是否为5,是5返回1不是5返回0
1.3 (1-MOD(INT(A2*10^B2),2))判断修约位数是否为双数 双数返回1 单数返回0
当1.1 1.2 1.3均为1的时候(即修约下两位没有数下一位且为5修约位数为双数,例如0.245,这时候不能四舍五入了,而是要去掉修约位数下一位的5,变为0.24)
四舍六入五成双公式对药学工作者很有用的
具体过程:
A2为需要修约的数据
B2为需要修约的位数
C2为修约结果,公式如下:
IF(((A2*10^(B2+1)-INT(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))=1,TRUNC(A2,B2),ROUND(A2,B2))
讲解:
1.1 ((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)判断需要修约的多一位上是否还有数据,如果有就返回0,没有返回1.
1.2 (MOD(TRUNC(A2*10^(B2+1)),5)=0)判断需要修约下一位是否为5,是5返回1不是5返回0
1.3 (1-MOD(INT(A2*10^B2),2))判断修约位数是否为双数 双数返回1 单数返回0
当1.1 1.2 1.3均为1的时候(即修约下两位没有数下一位且为5修约位数为双数,例如0.245,这时候不能四舍五入了,而是要去掉修约位数下一位的5,变为0.24)
第3个回答 推荐于2016-07-17
两种情况:
1.
被修约数 / 小数点后位数 / 结果
0.0834501 / 4 / 0.0835
其中结果一栏(0.0835)的设置为:=ROUND((TRUNC(A2*10^(B2+1))-((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))*5)/10^(B2+1),B2)
2.
(可用于负数)
被修约数 / 小数点后位数 / 结果
0 / 3 / 0
其中结果一栏的设置公式为:=IF(A2=0,0,(IF(A2>0,ROUND((TRUNC(A2*10^(B2+1))-((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))*5)/10^(B2+1),B2),-(ROUND((TRUNC(ABS(A2)*10^(B2+1))-((ABS(A2)*10^(B2+1)-TRUNC(ABS(A2)*10^(B2+1)))<=0)*(MOD(TRUNC(ABS(A2)*10^(B2+1)),5)=0)*(1-MOD(INT(ABS(A2)*10^B2),2))*5)/10^(B2+1),B2)))))本回答被提问者采纳
1.
被修约数 / 小数点后位数 / 结果
0.0834501 / 4 / 0.0835
其中结果一栏(0.0835)的设置为:=ROUND((TRUNC(A2*10^(B2+1))-((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))*5)/10^(B2+1),B2)
2.
(可用于负数)
被修约数 / 小数点后位数 / 结果
0 / 3 / 0
其中结果一栏的设置公式为:=IF(A2=0,0,(IF(A2>0,ROUND((TRUNC(A2*10^(B2+1))-((A2*10^(B2+1)-TRUNC(A2*10^(B2+1)))<=0)*(MOD(TRUNC(A2*10^(B2+1)),5)=0)*(1-MOD(INT(A2*10^B2),2))*5)/10^(B2+1),B2),-(ROUND((TRUNC(ABS(A2)*10^(B2+1))-((ABS(A2)*10^(B2+1)-TRUNC(ABS(A2)*10^(B2+1)))<=0)*(MOD(TRUNC(ABS(A2)*10^(B2+1)),5)=0)*(1-MOD(INT(ABS(A2)*10^B2),2))*5)/10^(B2+1),B2)))))本回答被提问者采纳