[英]Conditional formatting(custom format) with multiple conditions for a number in 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
本文 (第三個示例)提到格式化語句中只允許兩個條件:
自定義數字格式允許指定最多兩個條件。 這是因為只允許四個部分進行自定義數字格式化,兩個部分保留。 第四部分總是指定文本格式,另外一部分需要詳細說明“其他所有”(數字)的格式。
並且如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
結果如下:
第一列是原始數字,第二列是您建議的數字格式,第三列是VBA函數FormatNumber
。 請注意, FormatNumber
的結果是字符串,因此您無法使用它們進行計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.