我试图调整excel工作表中许多数值的小数。目标是: -对于高于100的数值,不设小数; -对于低于100但高于10的数值,设一位小数; -对于高于100的数值,设一位小数。- 对于高于100的数值,不设小数;对于低于100但高于10的数值,设一位小数;对于低于10的数值,设两位小数。
我以为使用VBA会很简单,尽管我从来没有使用过它。可惜我错了。请看我下面的代码。由于某些原因,只有代码中的 "elseif "部分能正常工作。对于小于100的值,小数的调整是正确的。但我的代码中的 "if "部分却不是这样。
此外,似乎代码在范围外的单元格(A1:D11)中也能工作(只要我选择它们);这很好,因为我的工作表非常大。但我不明白为什么。
如果你能给我一些启示,我将感激不尽。
Sub adjust_decimal()
'
'
'
'
Dim cell As Range
For Each cell In Range("A1:D11")
If cell.Value > 100 Then
Selection.NumberFormat = "0;General"
ElseIf cell.Value < 100 Then
Selection.NumberFormat = "[<10]0.00;[<100]0.0;General"
End If
Next cell
End Sub
你可以使用一行代码。
Range("A1:D11").NumberFormat="[<10]0.00;[<100]0.0;0"
.
有了这个规则,10以下的数字将有2位小数,等于或高于10但低于100的数字将有1位小数,其他情况都是整数。
请注意,这只适用于格式。它不会改变任何价值. 如果数值是200,55,你会看到它是201,但在涉及该单元格的任何计算中使用的数值将使用200,55,而不是201。