如果逗号消失,如果只有零后才会消失?

我想用以下方式显示数字:

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

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

到目前为止,我有

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

这个问题就是显示,例如,1000000为100M。

我可以改变

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

但是显示1000000为1,M。

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

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

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

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

  1. select你的单元格,和条件格式 – >新规则…
  2. select“使用公式…”并input=MOD(CellAddress,1000000)=0
  3. 点击格式,设置自定义数字格式为[>=1000000]#,, "M";[<1000000]#,"k"

在步骤2中,如果您正在处理非轮次号码,则还可以使用=MOD(H30,1000000)<4900 。 这应该给你:

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

我创build了一个小的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 

您可以通过input以下内容将其直接应用到电子表格中:

 =formatLargeNumber(cellreference) 

或者使用这个子testing它:

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

如果您想了解更多关于UDF的信息,请点击此处: 用户定义函数(Excel Easy)或创buildUDF(更好的解决scheme)