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位数字(十进制+整数部分)
[<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
我最近解决了这个问题,但最多配置了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
通过在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)