我正在编写VBA代码,用于在excel中为一列应用循环功能。
在这里,我使用以下代码成功地舍入一列。
If Target.Column = 18 Then
If Target.Value = 0 Then
Target.Value = ""
Else
Target.Value = Round(Target.Value, 0)
End If
它正在为一个圆柱完美地工作。
例如:255.50至256。
但是我的问题每当我输入255.50并拖动255.50到达范围假设为4个单元格。这里我能够对特定目标单元格应用舍入,而不是对所有拖动的单元格范围进行舍入。
为此,我想在工作表中找到拖动的单元格范围,并希望对所有拖动的列也应用舍入。
请给我任何建议。
我正在打印我的实际输出和我想要的输出,请参考这些。
实际输出:
256
255.5
255.5
255.5
255.5
255.5
期望输出:
256
256
256
256
256
256
请帮帮我..
答案 0 :(得分:0)
将您的实际数字放在A列中,如下所示
Cell A1= 256
Cell A2=255.5
Cell A3=255.5
Cell A4=255.5
Cell A5=255.5
Cell A6=255.5
并将以下公式放在单元格B1
中=ROUND(A1,0)
并将单元格B1拖到B6。
答案 1 :(得分:0)
您可以使用数字格式来实现所需的舍入,而不是将值四舍五入,从而丢失原始输入数字。
假设Target
在上面的代码中是Range
对象,而不是调用Round()
,您可以这样做:
Target.NumberFormat = "0" ' Round to no decimal digits
这样,单元格中的显示数字按预期显示为圆形,但原始数字仍保留在单元格中。因此,如果将来您决定舍入到一个十进制数,您可以按如下方式更改格式:
Target.NumberFormat = "0.0" ' Round to 1 decimal digit
并且它应该仍然可以正常工作,因为原始数字仍然存在 - 您只是以不同方式格式化/显示它。