首页 > 解决方案 > 如何去除整数上的小数

问题描述

在 Excel for Mac 中,我需要从公式生成的整数中删除零和小数点。VBA 代码基本上采用任何类型的分数并应用公式 =FRACTION+1,因此 5/2 变为 3.50,15/8 为 2.88,依此类推。

但是,当输入的分数是整数时,例如 7/1、10/1 等,整数的末尾有 .00。

这怎么可能不发生?

我不确定是否要在 VBA 代码完成其工作后做某事,或者是否可以将其合并到原始代码中。

只是告诉你,如果我将单元格转换后格式化为自定义和常规,这可以解决问题,但这不能事先完成,好像单元格是自定义和常规,当输入一个分数时,它变成了一个约会。

所以这是我的代码。除了整数有 2 位小数之外,它工作得很好。

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo err_handler

  Application.EnableEvents = False

  If Target.CountLarge > 1 Then GoTo exit_handler
  If Target = Empty Then GoTo exit_handler

  If Not Intersect(Target, Columns("P")) Is Nothing Then
    With Target
      .NumberFormat = "@"
      .Value = CDbl(Evaluate(.Value & "+1"))
      .NumberFormat = "0.00"
    End With
  End If

exit_handler:
  Application.EnableEvents = True
Exit Sub

err_handler:
  MsgBox Err.Number & ": " & Err.Description
  Resume exit_handler
End Sub

干杯

标签: excelvba

解决方案


一个快速的 if 语句可以对此进行排序。只需将您的行更改.NumberFormat = "0.00"为以下内容:

      If (.value - Fix(.value)) = 0 Then
        .NumberFormat = "0"
      Else
        .NumberFormat = "0.00"
      End If

Fix() 函数删除分数的小数部分,因此通过从原始值中减去它,您只剩下小数部分。如果剩下的为零,则该数字是一个整数,并且可以相应地格式化。


推荐阅读