如果之后只有零,如何使逗号消失?

时间:2016-05-18 14:19:15

标签: excel number-formatting

我希望以下列方式显示数字:

1250000 -> 1,25M
2000000 -> 2M
300000  -> 300k

那么,如果数字小于100万,则显示(数字/ 1000)k; 如果超过一百万,则显示(数字/ 1000000)M。

到目前为止我已经

[>=1000000]0,00  "M";[<1000000]0 "k"

问题在于它显示例如1000000为1,00M。

我可以改为

[>=1000000]0,##  "M";[<1000000]0 "k"

但显示1000000为1,M。

有谁知道如何让逗号消失100万的倍数?

2 个答案:

答案 0 :(得分:0)

我认为您的格式代码中缺少一些逗号(我正在使用美国本地化)。对于单元格中的数字格式,请使用[>=1000000]#.##,, "M";[<1000000]0,"k"。这会给你:

1250000 -> 1.25M
2000000 -> 2.M
300000  -> 300k

摆脱了。在2.M中,您可以使用条件格式。当数字是1,000,000的偶数倍时,请使用不同的格式。

  1. 选择单元格,条件格式 - &gt;新规则......
  2. 选择&#34;使用公式......&#34;并输入=MOD(CellAddress,1000000)=0
  3. 点击格式,然后将自定义数字格式设置为[>=1000000]#,, "M";[<1000000]#,"k"
  4. 在步骤2中,如果您要处理非圆数,也可以使用=MOD(H30,1000000)<4900。这应该给你:

    1250000 -> 1.25M
    2000001 -> 2M
     300000 -> 300k
    1000000 -> 1M
    1005000 -> 1.01M (Rounded up)
    

答案 1 :(得分:0)

我创建了一个小型UDF(用户定义函数)来解决这个问题:

Function formatLargeNumber(myValue As Long) As String

If myValue < 1000000 Then
    formatLargeNumber = CStr(Round(myValue / 1000, 0)) & " K"
    Exit Function
End If

If XLMod(myValue, 1000000) < 5000 Then
    formatLargeNumber = CStr(Round(myValue / 1000000, 0)) & " M"
Else
    formatLargeNumber = Format(CStr(Round(myValue / 1000000, 2)), "#.00") & " M"
End If

End Function
Function XLMod(a, b)
    ' This replicates the Excel MOD function
    XLMod = a - b * Int(a / b)
End Function

您可以输入以下内容直接将其应用于电子表格:

=formatLargeNumber(cellreference)

或使用此子测试:

Sub testFunction()
    Dim x As Long, y As String
    x = 1005001 'change his to test
    y = formatLargeNumber(x)
    Debug.Print y
End Sub

如果您想了解有关UDF的更多信息,请查看此处: User Defined Function (Excel Easy)Creating UDFs (Better Solutions)