当数据为千万和数百万时,我需要在“$ K”和“$ M”中有条件地格式化标签值。我一直在使用以下格式,它在Excel单元格($#,## 0.0,“K”)和($#,## 0.00,“M”)中分别工作得很好,当我使用它时这不起作用使用带有以下代码的VBA格式化标签标题:
lblInvestmentValue.Caption = Format(CStr(dblInvestmentVal), "[>=1000000] $#,##0.0,,""M"";[>0] $#,##0.0, ""K"";General")
使用此功能后,我得到以下输出
dblInvestmentVal Caption Expected Caption
812 $812.0M $812
8280119 $8,280,119.0M $8.29M
91281 $12,367.0M $12.4K
任何指针
答案 0 :(得分:1)
您可以使用IIF声明。
lblInventmentValue.Caption = IIF(Abs(dblInvestmentVal) >= 1000000, Format(dblInvestmentVal / 1000000, "$#,##0.0,,""M"""),IIF(Abs(dblInvestmentVal) >= 1000, Format(dblInvestmentVal / 1000, "$#,##0.0,,""K"""),Format(dblInvestmentVal, "$#,##0.0")))
语句使用Abs(dblInventmentVal)来正确地格式化否定数字。
答案 1 :(得分:0)
我不确定format
命令是否支持此条件数字格式,但您可以轻松将其替换为:
Function ConditionalFormatNumber(n As Double) As String
If n > 1000000 Then
ConditionalFormatNumber = Format(n / 1000000, "$#,##0.00,,""M""")
ElseIf n > 1000 Then
ConditionalFormatNumber = Format(n / 1000, "$#,##0.00, ""K""")
Else
ConditionalFormatNumber = Format(n, "$#,##0.0")
End If
End Function
答案 2 :(得分:0)
TEXT
工作表函数似乎遵循您最初指定的格式,您可以借助Application.WorksheetFunction
在VBA中使用它。
Application.WorksheetFunction.Text(812, "[>=1000000] $#,##0.0,,""M"";[>0] $#,##0.0, ""K"";General")
VBA reference for FORMAT不涉及条件数字格式,但是它具有数字格式部分,因此我希望条件数字格式无效-尽管我发现使用它默认为第一个模式很有趣您指定的格式。