Excel 函数高手请帮帮我

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:55:54
请Excel 函数高手帮我做一个奇进偶退的函数表达式,说方法也可以。说明下。奇进偶退用于测量工程中使用。主要原理是:类似于四舍五入。不通的是。当最后一位是刚好是“5”的时候,要看他前面一位数,如果前面一位是奇数那么就进,(也就是入)如果是偶数就退。(也就是舍)。例如:521.255 保留2位小数后是521.260 521.245 保留2位小数后是 521.240 根据以上说明 请个位高手给一个解答。谢谢。

=IF(MOD(MID(RIGHT(A1,2),1,1),2)=1,ROUNDUP(A1,2),ROUNDDOWN(A1,2))

输入完成后,设置单元格格式中把小数位设置3位。

如果得到数字不参加运算可以直接输入:

=TEXT(IF(MOD(MID(RIGHT(A1,2),1,1),2)=1,ROUNDUP(A1,2),ROUNDDOWN(A1,2)),"0.000_ ")
就直接得到数,但是进行运算时 可能 出现错误。
上边的公式得到的数值可以直接参加运算没事的。

不太明!
如:
521.250
521.251
521.260
521.269
由如何呢?
是否以上四个数都要求传回521.260
即小数第2位永远不会是 奇数
如是, 公式:
=IF(MOD(A1,0.02)>0.009999,CEILING(A1,0.02),FLOOR(A1,0.02))

hong4777 的公式对题目的理解, 与我不同,
但要注意:
其公式一定要A1的数字是小数后三位数才有效, 否则会计算错误, 如是1位小数, 更会出错误值

好象在Office 2003以上版本的“四舍五入”规则是这样的,以下版本只能通过变通方法。

一、VBA写个宏
Function Round2(ByVal Number As Double, Optional Num_Digits As Integer = 2) As Double
'四舍五入函数(二)
'前面一位是奇数就进,如果是偶数就退
Dim residue As Double
residue = Abs(Number * 10 ^ Num_Digits - Fix(Number * 10 ^ Num_Digits)) '舍位后面的余数
If residue <> 0.5 Then
Round2 = Round(