在Excel中可以使用度量“k”符号吗?

是否有可能在Excel中使用一些度量后缀标记:如果我写1000,单元格显示1k 。 如果我写1000000单元显示1M

我提出了两个解决方法,但也许有一个更合适的解决scheme。

 Function lecI(cadena) As Double u = Right(cadena, 1) If u = "k" Then mult = 1000 ElseIf u = "M" Then mult = 1000000 ElseIf u = "m" Then mult = 0.001 End If lecI = Val(Left(cadena, Len(cadena) - 1)) * mult End Function Function wriI(num) As String If num > 1000000 Then 'M wriI = Str(Round(num / 1000000, 2)) & "M" ElseIf num > 1000 Then 'k wriI = Str(Round(num / 1000, 1)) & "k" ElseIf num < 0.01 Then 'm wriI = Str(Round(num * 1000, 1)) & "m" Else: wriI = Str(num) End If 

基于@Vasily的链接 ,您只需使用条件格式即可获得所需的结果。 这很好,因为这意味着所有的值都以数字forms存储,而不是正常的文本和math运算

总体步骤:

  • 为每个1000块应用该块的数字格式创build一个新的条件格式
  • 在顶部添加最大的条件,所以首先格式化
  • 冲洗并重复以获得所有你想要的

条件格式用于对列C进行样式设置,这只是随机数据的十个不同的幂。 与D列相同的号码只是风格不同而已。

条件设置

数字格式非常简单,因为它们与该链接相同,请参阅大数字部分 。

  • ones = 0 " "
  • 数千= 0, " k"
  • 百万= 0,, " M"
  • 依此类推,无论你想要多less

自动化 ,如果你不想点击和键入整天,这里是一些VBA,将为您创build所有的条件格式(对于当前的Selection )。 这个例子达到数十亿。 通过扩展具有更多条目的Array保持添加3的幂。

 Sub CreateConditionalsForFormatting() 'add these in as powers of 3, starting at 1 = 10^0 Dim arr_markers As Variant arr_markers = Array("", "k", "M", "B") For i = UBound(arr_markers) To 0 Step -1 With Selection.FormatConditions.Add(xlCellValue, xlGreaterEqual, 10 ^ (3 * i)) .NumberFormat = "0" & Application.WorksheetFunction.Rept(",", i) & " "" " & arr_markers(i) & """" .StopIfTrue = False End With Next End Sub 

我更改StopIfTrue值,以便这不会破坏可能存在的其他条件格式。 如果最大的条件是在顶部(首先添加),那么从那个NumberFormat成立。 默认情况下,这些是使用StopIfTrue = True创build的。 如果在这些单元上没有其他条件格式,这是一个有争议的问题。