excel数字格式-可变小数位数

excel数字格式-可变小数位数,excel,formatting,cell,Excel,Formatting,Cell,我正试图用这些规则设置一种特殊的单元格编号格式: 显示百分比 最多显示3位数字(十进制+整数部分) 所以我可以显示100%或99.3%或1.27% 但不是100.9%或100.27%或99.27% 当然,我可以有负数(-27.3%),它不会影响我的规则 我尝试了单元格格式选项,但没有成功: [<1]0.00%;[<10]0.0%;0% 在功能区的“主页”选项卡下选择“条件格式”: 然后选择“新建规则”或“管理规则”(使用后者,您可以选择“新建规则”,但也可以查看所有当前规则)

我正试图用这些规则设置一种特殊的单元格编号格式:

  • 显示百分比
  • 最多显示3位数字(十进制+整数部分)
所以我可以显示100%或99.3%或1.27% 但不是100.9%或100.27%或99.27%

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

我尝试了单元格格式选项,但没有成功:

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

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

然后选择“新建规则”或“管理规则”(使用后者,您可以选择“新建规则”,但也可以查看所有当前规则)

然后选择使用公式确定要格式化的单元格,并参照单元格本身输入公式(在我选择单元格A1的情况下,去掉$signs以允许将其应用于其他单元格本身!):

现在,单击“格式…”,然后选择所需的数字格式(以百分比表示)和所需的小数位数

对所有要区分的情况重复此步骤

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


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

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

然后选择“新建规则”或“管理规则”(使用后者,您可以选择“新建规则”,但也可以查看所有当前规则)

然后选择使用公式确定要格式化的单元格,并参照单元格本身输入公式(在我选择单元格A1的情况下,去掉$signs以允许将其应用于其他单元格本身!):

现在,单击“格式…”,然后选择所需的数字格式(以百分比表示)和所需的小数位数

对所有要区分的情况重复此步骤

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


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

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

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

  • 1->1
  • 1,1->1,1
  • 1,12->1,12
  • 1123456->1123456
  • 11234567->1123457(从此点开始四舍五入)
这可以通过使用条件格式和从整数开始的每十进制一个规则来解决。整数是一个没有小数的数字,因此
X MOD 1=0
。我们可以应用此逻辑将数字乘以10^N,即我们想要的小数数。此外,我们希望在检测到小数数后停止应用规则在单元格值中,请确保标记“如果为真则停止”标志,并且规则的顺序是从限制性最大的一个(整数)到限制性较小的一个(表示允许的最大小数位数)

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

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

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

最后是Excel上的工作结果:


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

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

  • 1->1
  • 1,1->1,1
  • 1,12->1,12
  • 1123456->1123456
  • 11234567->1123457(从此点开始四舍五入)
这可以通过使用条件格式和从整数开始的每十进制一个规则来解决。整数是一个没有小数的数字,因此
X MOD 1=0
。我们可以应用此逻辑将数字乘以10^N,即我们想要的小数数。此外,我们希望在检测到小数数后停止应用规则在单元格值中,请确保标记“如果为真则停止”标志,并且规则的顺序是从限制性最大的一个(整数)到限制性较小的一个(表示允许的最大小数位数)

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

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

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

最后是Excel上的工作结果:


通过在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))
如果要在sheets单元格中使用它,则需要另一个小函数

  Function FormatAlignDigits(myVal As Double) As Double
     FormatAlignDigits = Format(myVal, formatStr(myVal))
  End Function
=>您可以在wan所在的单元格中输入=FormatAlignDigits(B27)