首页 文章

具有千位分隔符的数字格式和必要时的十进制

提问于
浏览
1

我正在尝试创建一个自定义格式,这样数字将以逗号显示为千位分隔符 . 如果数字有一个小数点,我正在努力寻找一个小数点的解决方案(通过试验和错误以及搜索),但如果数字是整数,则没有小数点 .

这就是我想要实现的目标:

  • "123"显示为"123"
  • "1234"显示为"1,234"
  • "1234.5"显示为"1,234.5"
  • "1234.56"显示为"1,234.56"
  • "1234.567"显示为"1,234.57"

这是我到目前为止所尝试的,无济于事:

Print Format(1234, "Standard") 'Displays "1,234.00"
Print Format(1234, "#,###.##") 'Displays "1,234."

这些不是期望的结果,因为它不必要地显示小数 . 如何在需要时访问小数点,并避免在没有时使用千位分隔符?

2 回答

  • 1

    您可以使用Excel VBA中的自定义格式函数 CustomFormat 完成此任务,如下所示:

    Sub TestFormatString()
        Debug.Print CustomFormat(123)
        Debug.Print CustomFormat(1234)
        Debug.Print CustomFormat(1234.5)
        Debug.Print CustomFormat(1234.56)
        Debug.Print CustomFormat(1234.567)
    End Sub
    
    Function CustomFormat(InputValue As Double) As String
        CustomFormat = Format(InputValue, "#,###.##")
        If (Right(CustomFormat, 1) = ".") Then
            CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
        End If
    End Function
    

    以下显示的结果符合您的要求:

    123
    1,234
    1,234.5
    1,234.56
    1,234.57
    

    Note :由于您没有指定如何显示小于1的数字(例如,0.123),请考虑两种可能的解决方案:

    • CustomFormat 上面显示的VBA功能将显示为.12

    • 为了将其显示为0.12,只需在 CustomFormat 函数中更改格式掩码“ #,###.## " to " #,##0.## ”,保持其余部分不变 .

    希望这可能有所帮助 .

  • 2

    您可以为具有Decimal的那些添加 Conditional Formatting ,然后将默认的Number Format设置为0小数 .

    • 添加 Conditional Formatting :使用 #,##0.## ,除非您希望 0.5.5

    ConditionalFormatting

    • 设置 Default Number Format

    DefaultNumberFormat

    • 完成

    Results

相关问题