如果逗号消失,如果只有零后才会消失?
我想用以下方式显示数字:
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的倍数时,使用不同的格式。
- select你的单元格,和条件格式 – >新规则…
- select“使用公式…”并input
=MOD(CellAddress,1000000)=0
- 点击格式,设置自定义数字格式为
[>=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)