我想在Excel中格式化大数字,只显示两个最高位数。剩余的数字将用额外的零填充。
示例:
1234567将显示为1 200 000
和
1234将显示为1 200
使用格式##“000”会将1234567显示为1 235 000但这不是我想要的,因为它不能缩放到一位数的数字。像1.2 M这样的解决方案并不是我想要的。
相同的格式应适用于这两个示例。我不想对数字进行舍入,而只是围绕显示的值(格式)。
答案 0 :(得分:0)
也许您可以使用此处所述的条件格式: http://www.wikihow.com/Apply-Conditional-Formatting-in-Excel
所以,如果您的电话号码超过100且小于1000 - # # " 00"
超过1000且不到10000 - # # " 000"
等等
编辑 - 我知道该教程适用于某些Mac版本的Excel,但我的Excel2010中仍然存在Conditionl格式化
答案 1 :(得分:0)
假设您的值在A1中,以下公式会在您的两个数字上返回正确的结果
=ROUND(A1/POWER(10,LEN(A1)-2),0)*POWER(10,LEN(A1)-2)
换句话说,获取位数......
LEN(A1)
获得10 ^(位数-2)
POWER(10,LEN(A1)-2)
将您的号码除以该号码
A1/POWER(10,LEN(A1)-2),0)
将该数字舍入以除去小数
ROUND(A1/POWER(10,LEN(A1)-2),0)
然后乘以该数字以获得最终结果
=ROUND(A1/POWER(10,LEN(A1)-2),0)*POWER(10,LEN(A1)-2)
然后,您可以使用TEXT格式来获取所需的格式。有点像...
=TEXT(ROUND(A1/POWER(10,LEN(A1)-2),0)*POWER(10,LEN(A1)-2),"# ###")
可能会满足您的需求
编辑:如评论中所述,如果您的原始值位于不同的单元格中,您还可以使用以下函数进行格式化
=CONCATENATE(LEFT(A1,2),REPT("0",LEN(A1)-2))
答案 2 :(得分:0)
如果您希望以这种方式格式化的单元格包含值而不是公式,请选择单元格并运行此微小宏:
Sub PhancyPhormat()
Dim r As Range, i As Long, le As Long
Dim DQ As String
DQ = Chr(34)
For Each r In Selection
s = CStr(r.Value)
le = Len(s)
For i = 3 To le
Mid(s, i, 1) = "0"
Next i
phony = DQ & s & DQ & ";;;"
r.NumberFormat = phony
Next r
End Sub
如果更改值,则需要重新运行宏。