在 Excel 中使用可选的小数位格式化数字

Ray*_*Ray 97 worksheet-function microsoft-excel

我在 Excel 的单元格中有数字。我希望数字格式化,以便如果它们有小数位,则最多显示两位,如果没有小数位,则不显示任何小数位。

例如。

  • 15 应该被格式化为 15,而不是 15.00
  • 14.3453453 的格式应为 14.35
  • 12.1 应格式化为 12.1
  • 0 应格式化为 0

我想出的最接近的自定义格式代码是0.##. 不幸的是,这个格式15.0015。(注意额外的小数点)。

使问题进一步复杂化的是,电子表格是从 SQL Server Reporting Services 导出的结果。所以没有宏是可能的。哦,好吧,这看起来0.##是我最好的选择,他们可以忍受额外的时间。

小智 38

或者,您可以使用以下解决方案解决“可选”小数点问题:

数字格式: General;[Red](General)

这将相应地添加小数位和小数值,同时以更清晰的方式格式化负数。

至于海报的原始问题,您仍然需要使用公式舍入/截断“额外”的小数点。然而,这是一个简单的公式,=ROUND(<value>,<desired decimal places>)计算量并不大。

例子:

2500 -> 2500
0.25 -> 0.25
-2500 -> (2500)
-0.25 -> (0.25)
Run Code Online (Sandbox Code Playgroud)

  • 这个答案值得更多赞成。它在不使用条件格式的情况下正确处理了小数点。在我的特定情况下,我想显示所有小数位,所以我什至不需要修改公式。 (4认同)
  • 如果数字有太多小数,“General”就会出现进入科学记数法的问题,例如“2.6532E-06”而不是“0.0000026532”。 (2认同)

Rob*_*rns 22

Excel 自定义格式可以提供部分答案

Excel 中数字的自定义格式以这种格式输入:

  • 正数格式;负数格式;零格式;文本格式

一种接近您的要求但没有小数的数字保留在小数位的一种格式是:

#,###.??;(#,###.??);0
Run Code Online (Sandbox Code Playgroud)

例子:

  • 15 显示为 15。
  • 14.3453453 显示为 14.35
  • 12.1 显示为 12.1
  • 0 显示为 0

  • 然而实际上并没有提供有效的解决方案,甚至没有提供可能的解决方法。它确实有关于自定义数字格式的有用信息。 (8认同)
  • 15 显示为 ,15。 (5认同)
  • 谁需要显示“15”?这肯定是 Excel 的错误! (5认同)

小智 19

对非十进制数字应用条件格式。

例如,A1 是目标单元格。

  1. 将 A1 格式设置为“###,###.00”。这将用于十进制数。
  2. 为非十进制数字定义条件格式。

    • 条件:单元格值等于 =TRUNC(A1)。
    • 格式: ###,###

结果如下:

12       =>  12
14.231   => 14.23
15.00000 => 15
17.3     => 17.30
Run Code Online (Sandbox Code Playgroud)

  • 刚刚遇到了数字 4.001 的问题,它在显示时四舍五入为 4.00,但不满足条件格式公式 (4.001 &lt;&gt; 4),并且仍显示为“4.”。我用这个条件公式来解决它:=ROUND($A1;2)=TRUNC($A1) (3认同)

小智 16

我的答案删除了小数点删除了 0 值

在条件格式中写入:

General;#;;@
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题。

  • 这会将零显示为空单元格。 (4认同)

小智 6

这是使用条件格式的一种方法。

  1. 右键单击您的单元格,选择“设置单元格格式”
  2. 选择“自定义”
  3. 输入“0.####”(增加或减少#s来控制最大小数位数)
  4. 单击确定
  5. 在单元格仍处于选中状态的情况下,使用“条件格式”(可能是“格式”中的菜单项或“主页”中的按钮,具体取决于您的 Excel 版本)
  6. 添加新规则,基于公式“=MOD(H32,1)=0”

    编辑- 更好的公式是“=MOD(ROUND(H32,2),1)=0”,其中“2”是所需的小数位数。如果数字四舍五入为整数,则前面的公式保留尾随小数点。

    将公式中的 H32 替换为您单元格的 ID,但请确保没有 $ 符号!(没有 $ 符号确保您将格式复制到其他单元格)

  7. 对于此规则的格式,选择数字选项卡,选择“自定义”

  8. 这次,输入公式“0”
  9. 单击“确定”足够多的时间以返回到工作表(因 excel 版本而异)

就这样,负责任地享受吧!如果要将格式复制到其他单元格,请记住您可以复制单元格并使用带有“格式”选项的“选择性粘贴”。


Dro*_*roj 5

我最近在 Excel 2007 中遇到了这个问题,结果在值单元格中使用了“TRUNC”函数:

  value  =TRUNC(B5,1)
      0      0
      5      5
    5.4    5.4
  65.43   65.4
765.432  765.4
Run Code Online (Sandbox Code Playgroud)

完全按照我想要的方式工作......

  • 是的, TRUNC(x,2) 和 ROUND(x,2) 都可以完成这项工作(取决于您采用哪种舍入方法)。然后,您只需将单元格格式设置为“常规”,并且仅在需要时才显示小数位。(我投票将 Droj 的帖子标记为答案。) (3认同)

小智 1

您/您的用户是直接在单元格中输入值,还是由公式或宏填充?

如果单元格不是由人类直接填充,您可以将计算值存储在隐藏范围中,然后使用如下公式向用户显示格式化文本:

=IF(ROUND(A1,2)=INT(A1),TEXT(A1,"0"),TEXT(A1,"0.0#"))
Run Code Online (Sandbox Code Playgroud)

(其中“A1”是被引用的单元格)

该公式将显示如下值:

 -------------------------
 |Original     |Formatted|
 |-------------+---------|
 |         15  |       15|
 | 14.3453453  |    14.35|
 |       12.1  |     12.1|
 |          0  |        0|
 |    -15.123  |   -15.12|
 |      1.004  |        1|
 -------------------------
Run Code Online (Sandbox Code Playgroud)

注意:公式输出是文本字符串,而不是数字,因此:

  • 输出默认为左对齐。
  • 您不能在任何进一步的计算中使用输出(相反,您应该使用引用的原始单元格)