1

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

  • 显示百分比
  • 最多显示 3 位数字(小数 + 整数部分)

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

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

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

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

因为似乎excel(2010)在单元格格式中不支持超过2个条件(所以我不能扩展它来管理负数......)

反正它在那里做我想做的事吗?

谢谢

4

3 回答 3

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

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

我的测试结果:

100.3 => 100
100.5 => 101
10.53 => 10.5
10.55 => 10.6
1.553 => 1.55
1.555 => 1.56
0.5553 => 0.555
0.5555
=> 0.556
-0.5555 => -0.556
-0.5553 = > -0.555 -1.555 => -1.56
-1.553 => -1.55
-10.55 => -10.6
-10.53 => -10.5
-100.5 => -101
-100.3 => -100

我确信可以有一个更花哨的解决方案,例如使用函数“formatStr”的参数,它告诉数字位数下降到 0 的幂(这里:幂 = 2;意思是如果值 >= 100) . 对我来说,这个原始的东西很好用。

于 2017-10-09T09:31:40.260 回答
0

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

有条件的瓷砖

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

然后选择使用公式来确定要格式化的单元格并参考单元格本身输入公式(在我的情况下,单元格A1被选中,去掉 $ 符号以使其也可以应用于其他单元格本身!):

新规则

现在单击 Format... 并选择所需的数字格式作为百分比和所需的小数位数。

对您要区分的所有情况重复此操作。

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

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

于 2012-12-12T12:27:23.797 回答
0

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

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

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

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

总而言之,您必须配置以下方式(在我为 B 列做的示例中):

  • 整数:=MOD(B2;1)=0
  • 一位小数:=MOD(B2*10;1)=0
  • 两个小数:=MOD(B2*100;1)=0
  • ...
  • 六个小数:=MOD(B2*1000000;1)=0

在此处输入图像描述

在此处输入图像描述

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

在此处输入图像描述

最后是 Excel 上的工作结果:

在此处输入图像描述

于 2016-11-16T11:01:14.763 回答