首页 > 解决方案 > 我的 VBA 代码的“elseif”部分有效,但“if”无效

问题描述

我试图调整 excel 工作表中许多值的小数。
目标是:
- 对于大于 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

标签: excelvba

解决方案


您可以使用一行代码:

Range("A1:D11").NumberFormat="[<10]0.00;[<100]0.0;0".

使用此规则,10 以下的数字将有 2 个小数,等于或大于 10 但低于 100 的数字将有 1 个小数,任何其他情况都是整数。

请注意,这仅适用于格式,它根本不会改变值。如果值为 200,55,您将看到它为 201,但在涉及该单元格的任何计算中使用的数值将使用 200,55,而不是 201。


推荐阅读