金币
UID423768
帖子
主题
积分1018
注册时间2019-2-11
最后登录1970-1-1
听众
性别保密
|
欢迎您注册蒲公英
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
宏的话,验证是不是挺复杂呢?闲来无事乱写了个公式,希望有用=if((A2*B2-0.5)/int(A2*B2)=1,int(A2*B2)+mod(int(A2*B2),2),if(A2*B2-int(A2*B2)>0.5,int(A2*B2)+1,int(A2*B2)))/B2
说明:
A2为原始数据;
B2为小数点保留位数,例如:1位小数为10,2位小数为100以此类推;
公式复制在C2栏内
补充内容 (2019-3-3 13:42):
=if((A2*power(10,B2)-0.5)/int(A2*power(10,B2))=1,int(A2*power(10,B2))+mod(int(A2*power(10,B2)),2),round(A2,B2)*power(10,B2))/power(10,B2)
A2:原始数据
B2:小数点保留位数,0、1、2、3……
补充内容 (2019-3-3 14:06):
参考31楼:
0位,=IF((A2-0.5)/int(A2)=1,int(A2)+mod(int(A2)),ROUND(A2,0))
1位,=IF((A2*10-0.5)/int(A2*10)=1,int(A2*10)+mod(int(A2*10),2),ROUND(A2,1)*10)/10
补充内容 (2019-3-3 14:08):
2位,=IF((A2*100-0.5)/int(A2*100)=1,int(A2*100)+mod(int(A2*100),2),ROUND(A2,2)*100)/100
3位,=IF((A2*1000-0.5)/int(A2*1000)=1,int(A2*1000)+mod(int(A2*1000),2),ROUND(A2,3)*1000)/1000
补充内容 (2019-3-3 14:08):
以此类推,欢迎测试
补充内容 (2019-3-3 14:19):
再次简化,这样应该没Bug了,31楼的思路很巧妙啊
0位:=IF(MOD((A1-0.5),2)=1,ROUND(A1,0),A1-0.5)
1位:=IF(MOD((10*A1-0.05),2)=1,ROUND(A1,1),A1-0.05)
2位:=IF(MOD((100*A1-0.005),2)=1,ROUND(A1,1),A1-0.005)
补充内容 (2019-3-3 14:20):
3位:=IF(MOD((1000*A1-0.0005),2)=1,ROUND(A1,1),A1-0.0005)
4位:=IF(MOD((10000*A1-0.00005),2)=1,ROUND(A1,1),A1-0.00005)
补充内容 (2019-3-3 14:39):
round后面的参数忘改了,依次为:round(A1,0),round(A1,1),round(A1,2),round(A1,3),round(A1,4)
补充内容 (2019-3-3 14:55):
测试了,不行,再研究研究吧
补充内容 (2019-3-3 15:34):
还是用这个吧=if((A2*power(10,B2)-0.5)/int(A2*power(10,B2))=1,int(A2*power(10,B2))+mod(int(A2*power(10,B2)),2),round(A2,B2)*power(10,B2))/power(10,B2)
A2:原始数据
B2:小数点保留位数,0、1、2、3…… |
-
|