【问题标题】:Excel number format to only show decimals when necessaryExcel 数字格式,仅在必要时显示小数
【发布时间】:2018-10-05 01:37:18
【问题描述】:

如何在不使用公式的情况下将整数显示为整数,但小数仅限于特定的小数位数。

例如显示: 111212,但1.234567891.23

数字格式0.## 很接近,但将1 显示为1. 等。

【问题讨论】:

  • 也许类似于 if、round、len?您应该为您和问题定义所有情况的要求。
  • 这应该是 Microsoft Excel 错误...并据此报告,“#.#” (.NET) 格式在使用“#.#”时将“7”显示为“7”

标签: excel number-formatting


【解决方案1】:

线程有点晚了,但我有一份报告计算百分比到小数点后 7 位,但该列也包含整数。

我的结论是使用条件格式,因此如果单元格包含句点/小数点“。”然后将格式更改为带 2 位小数的数字。 这样,如果没有句点/小数点,则值将保持未经编辑。

【讨论】:

    【解决方案2】:

    如果您想将该值用作文本,您可以使用它(使用 A1 作为数字):

    =TEXT(A1,IF(MOD(A1,1)=0,"#","#.##"))
    


    说明:
    IF(MOD(A1,1)=0:这部分通过取模函数检查数字是否为整数。

    "#","#.##":如果条件为真,则使用"#",如果条件为假,则使用"#.##"。这些是相应的整数和十进制数的适当格式选项。

    "#.##" 中小数点后的哈希数定义了最大精度,但它只会显示所需的数量,例如2.1 不会是“2.10”,而是“2.1”。

    或者:"#.00" 可用于始终填充 0,这会使“1.3”变为“1.30”。

    【讨论】:

      【解决方案3】:

      也许一个用于将坐标放置到一个点的示例可能会有所帮助。

      Sub PutCoord(PtN&, Px#, Py#, S4$)
      
      Px = Round(Px, 2): Py = Round(Py, 2)
      
       Dim XS$: If Px = Int(Px) Then XS = Format(Px, "0") Else XS = Format(Px, "0.##")
      
       Dim YS$: If Py = Int(Py) Then YS = Format(Py, "0") Else YS = Format(Py, "0.##")
      
         Dim WS$: WS = "Pt " & PtN & " @ " & XS & " , " & YS
      
         With ActiveSheet.Shapes.AddShape(msoShapeDoubleBracket, Px, Py, 90, 20)
      
            With .TextFrame
      
               .MarginLeft = 0
      
               .MarginRight = 0
      
               .MarginTop = 0
      
               .MarginBottom = 0
      
               .Characters.Text = WS
      
               .AutoSize = msoAutoSizeShapeToFitText
      
            End With
      
            .Name = S4 & PtN
      
         End With
      
      End Sub
      

      【讨论】:

        【解决方案4】:
        =IF(MOD(A1,1)=0,TEXT(A1,"0"),TEXT(A1,"0.00"))
        

        【讨论】:

          【解决方案5】:

          如果可以接受,您可以不在工作表中使用公式,而是将其用作条件格式的条件。

          当你的数据在A1:A4作为截图示例时,我们应该创建2个格式规则:

          1. 公式为:=MOD($A1,1) = 0 适用于:=$A$1:$A$4 根据此规则的格式将数字格式化为无小数。
          2. 公式为:=MOD($A1,1) <> 0 适用于 =$A$1:$A$4 & 格式化数字以显示 2 位小数。

          实际上第二个条件是可选的。您可以使用 2 位小数格式化整列,并使用第一条规则设置条件格式,因此只有整数没有小数。

          请看我的示例截图:

          【讨论】:

          • 好主意。如果使用#.# 样式格式无法做到这一点,我会将其标记为正确。我可能只是录制一个宏!
          • 这是一个很好的解决方案,但是如果底层数据被格式化为百分比,它就不起作用了。因为基础值存储为小数,所以使用 MOD() 不会产生所需的结果。在这种情况下,我使用了=TRUNC(A1*100)=A1*100
          • 好答案。作为替代方案,也可以使用 $A1=INT($A1) 代替 MOD。稍微简单一点。
          【解决方案6】:

          我们使用 if 和文本公式来格式化您的值。如果您的值在 A 列中,请使用以下公式:

          =IF(LEN(A1)=1,TEXT(A1,"0"),TEXT(A1,"0.00"))
          

          这个公式基本上说如果单元格值的长度为1,则返回格式化值为“0”,否则返回值为“0.00”。

          【讨论】:

          • 我简化了我的问题。我想将 12 显示为 12,将 123 显示为 123。
          • 不幸的是我不想使用公式,因为我需要设置整个表格的格式。
          猜你喜欢
          • 2021-03-26
          • 1970-01-01
          • 2012-08-10
          • 1970-01-01
          • 1970-01-01
          • 2022-09-26
          • 1970-01-01
          • 2011-06-19
          • 1970-01-01
          相关资源
          最近更新 更多