路桥隧 - 免费·分享·共赢

标题: Excel单元格中奇进偶不进公式 [打印本页]

作者: baihei    时间: 2007-11-15 15:17
标题: Excel单元格中奇进偶不进公式
以前就有不少人问我要过试验上经常用到的奇进偶不进公式,方法比较多。今天又有人提到,花了点时间编了一个自以为比较简洁而且所有公式非常简单的方法,不知效果如何,请大家指教。
假如要进行奇进偶不进四舍五入的单元格为“A1",需要保留两位小数,折计算公式:
=IF(AND(INT(100*A1)-2*INT(A1*100/2)=0,(A1*100-INT(A1*100))<0.6),INT(A1*100)/100,ROUND(A1,2))

如果需要保留3位小数,则把式中的100改成1000,同事更改最后的“ROUND(A2,2))”为“ROUND(A1,3))”即可。
=IF(AND(INT(1000*A1)-2*INT(A1*1000/2)=0,(A1*1000-INT(A1*1000))<0.6),INT(A1*1000)/1000,ROUND(A1,3))

如果需要保留N位小数,则把式中的100改成1后面加N个0,同事更改最后部位为“ROUND(A2,N))”即可。
=IF(AND(INT(10^N*A1)-2*INT(A1*10^N/2)=0,(A1*10^N-INT(A1*10^N))<0.6),INT(A1*10^N)/10^N,ROUND(A1,N))


另外还可以用很多别的办法实现
比如:
ROUND(A1/(IF(--(RIGHT(A1/10^(INT(LOG(ABS(A1)))-2),2))=0.5,2,1)*SIGN(A1)*10^(INT(LOG(ABS(A1)))-2)),0)*IF(--(RIGHT(A1/10^(INT(LOG(ABS(A1)))-2),2))=0.5,2,1)*SIGN(A1)*10^(INT(LOG(ABS(A1)))-2)
大家还有什么好办法欢迎交流
作者: baihei    时间: 2007-11-15 16:22
假如公式运用中存在负数应改为:
=IF(AND(INT(100*ABS(A2))-2*INT(ABS(A2)*100/2)=0,(ABS(A2)*100-INT(ABS(A2)*100))<0.6),A2/ABS(A2)*INT(ABS(A2)*100)/100,ROUND(A2,2))
作者: zhangbf    时间: 2010-5-3 22:36
谢谢分享,
作者: 灵魂的影子    时间: 2010-6-28 08:44
好东西 谢谢了啊!!!!
作者: lily010679    时间: 2010-7-7 08:23
好东东!




欢迎光临 路桥隧 - 免费·分享·共赢 (http://luqiaosui.com/) Powered by Discuz! X3.2