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

我想根据单元格中的值dynamic地将数字格式化为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

本文 (第三个例子)提到格式化语句中只有两个条件是允许的:

自定义数字格式允许指定两个条件。 这是因为只有四个部分被允许用于自定义数字格式,并且两个被保留。 第四部分总是指定文本格式,另一部分则需要详细说明“其他”(数字)将如何格式化。

正如Excel 2010帮助中所述:

数字格式最多可以有四个代码段,用分号分隔。 这些代码段依次定义了正数,负数,零值和文本的格式。

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

作为一个中间解决scheme,你可以使用我写的下面的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数字格式

第一列是原始数字,第二列是你提出的数字格式,第三列是VBA函数FormatNumber 。 请注意, FormatNumber的结果是string,所以你不能用它们来计算。