条件格式(自定义格式),具有Excel中的数字的多个条件

时间:2015-11-04 12:17:27

标签: excel

我想根据单元格中的值动态地将数字格式化为M(百万),B(十亿)或K(千)。我试过了(但这不起作用):

[>1000000000]0,,,"B";[>1000000]0,,"M";[>1000]0,"K";0”

如果我给出任何两个条件,它会起作用,例如:

[>1000000000]0,,,"B";[>1000000]0,,"M";0  

 [>1000000]0,,"M";[>1000]0,"K";0 )

参考:https://www.sumproduct.com/thought/multiple-number-formatting.html

1 个答案:

答案 0 :(得分:2)

This article(第三个例子)提到格式化语句中只允许两个条件:

  

自定义数字格式最多允许指定两个条件。这是因为只允许四个部分进行自定义数字格式化,两个部分保留。第四部分总是指定文本格式,另外一部分需要详细说明“其他所有”(数字)的格式。

正如Excel 2010帮助中所述:

  

数字格式最多可包含四个代码段,以分号分隔。这些代码部分按顺序定义正数,负数,零值和文本的格式。

     

<POSITIVE>;<NEGATIVE>;<ZERO>;<TEXT>

作为中间解决方案,您可以使用我编写的以下VBA函数:

Function FormatNumber(val As Variant) As String
If IsNumeric(val) Then
    Dim NumVal As String
    NumVal = ""

    If val > 1000000000 Then
        NumVal = Str(val / 1000000000#) & "B"
    ElseIf val > 1000000# Then
        NumVal = Str(val / 1000000#) & "M"
    ElseIf val > 1000# Then
        NumVal = Str(val / 1000#) & "K"
    Else
        NumVal = Str(val)
    End If

    FormatNumber = NumVal
Else
    FormatNumber = val
End If
End Function

结果是:

excel number format

第一列是原始数字,第二列是您建议的数字格式,第三列是VBA函数FormatNumber。请注意,FormatNumber的结果是字符串,因此您无法使用它们进行计算。