excel数字格式 - 不同的十进制数字

时间:2012-12-12 11:01:37

标签: excel formatting cell

我正在尝试使用这些规则设置特殊的单元格编号格式:

  • 显示百分比
  • 以最多3位数字(十进制+整数部分)显示

所以我可以显示100%或99.3%或1.27% 但不是100.9%或100.27%或99.27%。

当然,我可以有负数(-27.3%)并且它不会影响我的规则。

我尝试使用单元格格式选项但没有成功:

[<1]0.00%;[<10]0.0%;0%

因为看起来excel(2010)在细胞格式化中不支持超过2个条件(所以我不能扩展它以管理负数...)

无论如何要做我想做的事情?

由于

3 个答案:

答案 0 :(得分:1)

通过在VBA中实现一个函数,我有一个相当原始的解决方案:

Function formatStr(myVal As Double) As String
' the smaller the number, the more digits are to be shown
Dim retStr      As String
Dim absVal      As Double

    absVal = Abs(myVal)

    If absVal >= 100 Then
        retStr = "0"
    ElseIf absVal >= 10 Then retStr = "0.0"
    ElseIf absVal >= 1 Then retStr = "0.00"
    Else ' number is between -1 and 1
        retStr = ".000"
    End If

    formatStr = retStr
End Function

...然后可以在这样的VBA语句中使用:

   myVal = 0.5555: ActiveSheet.Cells(27, 4).Value = Format(myVal, formatStr(myVal))

如果你想在单元格单元中使用它,你需要另一个小函数

  Function FormatAlignDigits(myVal As Double) As Double
     FormatAlignDigits = Format(myVal, formatStr(myVal))
  End Function

=&GT;您可以在要获得结果的单元格中输入 = FormatAlignDigits(B27) 。 B27是本例中包含源数据的单元格。

我的测试结果:

100.3 =&gt; 100个
100.5 =&gt; 101个
10.53 =&gt; 10.5
10.55 =&gt; 10.6
1.553 =&gt; 1.55
1.555 =&gt; 1.56
0.5553 =&gt; 0.555
0.5555 =&gt; 0.556
-0.5555 =&gt; -0.556
-0.5553 =&gt; -0.555
-1.555 =&gt; -1.56
-1.553 =&gt; -1.55
-10.55 =&gt; -10.6
-10.53 =&gt; -10.5
-100.5 =&gt; -101
-100.3 =&gt; -100

我确定可以有一个更奇特的解决方案,例如带有函数参数&#39; formatStr&#39;它告诉哪个数字的位数下降到0(这里:power = 2;表示值是> = 100)。 对我来说,这个原始的东西运作得很好。

答案 1 :(得分:0)

在功能区的“主页”选项卡下,选择“条件格式:

Conditional tile

然后选择新规则或管理规则(后者可以选择新规则,但也可以概述所有当前规则)

然后选择使用公式确定要格式化的单元格并输入参考单元格本身的公式(在我的情况下,单元格 A1 被选中,取$注销,以便它也可以应用于其他细胞!):

New Rule

现在点击格式...并选择所需的数字格式作为百分比,并根据需要选择小数位数。

对要区分的所有案例重复此操作。

由于值可能为负,我使用ABS()始终测试单元格绝对值的规则。

请注意,您可以将所有规则应用于2边限制值范围(在我的示例中,我的最小值为0.1,最大值为1(分别为10%和100%)。或者,您只能确定最小值OR最大值并勾选右侧的Stof If True框,以了解您所涉及的所有规则。

答案 2 :(得分:0)

我最近解决了这个问题但配置了最多6位小数。请求如下:

  

我们希望以与用户输入相同的方式显示数字,但是   允许不超过6位小数:

  • 1 - &gt; 1
  • 1,1 - &gt; 1,1
  • 1,12 - &gt; 1,12-
  • ...
  • 1,123456 - &gt; 1,123456
  • 1,1234567 - &gt; 1,12345 7 (从这一点开始)

这可以使用条件格式和从整数开始的每个小数一个规则来解决。整数是不带小数的数字,因此X MOD 1 = 0。我们可以应用这个逻辑将数字乘以10 ^ N,即N是我们想要的小数位数。此外,我们想要在检测到单元格值中的小数位数时停止应用规则,因此请务必标记“Stop if True”标记,并且规则的顺序是从最严格的一个(整数)到限制性较小(代表允许的最大小数位数)。

总结一下,你必须配置以下方式(在我为B列做的样本中):

  • INTEGER:=MOD(B2;1)=0
  • ONE DECIMAL:=MOD(B2*10;1)=0
  • 两个DECIMALS:=MOD(B2*100;1)=0
  • ...
  • 六个DECIMALS:=MOD(B2*1000000;1)=0

enter image description here

enter image description here

还将单元格的默认格式设置为具有最大支持小数位数的数字:

enter image description here

最后在Excel上的工作结果:

enter image description here