Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将单元格中的数字取整为Excel中的特定数字_Excel_Vba - Fatal编程技术网

如何将单元格中的数字取整为Excel中的特定数字

如何将单元格中的数字取整为Excel中的特定数字,excel,vba,Excel,Vba,我有一些产品价格,比如 30,56 25,34 26,88 30,13 我想用0,50的上限来取整它们 如果数字超过x.50,则为x.90,如果不是,则为x.50 使用VBA函数是否可能?使用此公式进行四舍五入: =IF(A:A-INT(A:A)>0.5,INT(A:A)+0.9,INT(A:A)+0.5) 解释 它减去浮点数so的整数部分,并测试其是否为>0.5soA:A-INT(A:A)>0.5表示(30.56-30)>0.5,即0.56>0.5 公式的意思是: If (30.5

我有一些产品价格,比如

30,56
25,34
26,88
30,13
我想用0,50的上限来取整它们

如果数字超过x.50,则为x.90,如果不是,则为x.50


使用VBA函数是否可能?

使用此公式进行四舍五入:

=IF(A:A-INT(A:A)>0.5,INT(A:A)+0.9,INT(A:A)+0.5)

解释

它减去浮点数so的整数部分,并测试其是否为
>0.5
so
A:A-INT(A:A)>0.5
表示
(30.56-30)>0.5
,即
0.56>0.5

公式的意思是:

If (30.56 - 30) > 0.5 Then (30 + 0.9) Else (30 + 0.5)
替代解决方案:

=INT(A1)+0.5+0.4*(MOD(A1,1)>0.5)

使用IF、MOD和RoundDown

=IF(MOD(A2,1)>0.5,ROUNDDOWN(A2,0)+0.9,ROUNDDOWN(A2,0)+0.5)

您可能需要附加条件来处理附带案例,例如价格为0。

是的,这是可能的。如何处理?:)@Nikos 20,95的值应该四舍五入到什么?虽然是向上或向下四舍五入,但它是32.35到30.50,而不是32。50@Nikos“它是32.35到30.50,而不是32.50”那不是真的,你当时做错了什么。该公式按预期工作。我补充了一个解释。