如何格式化excel大数字用两位有效数字四舍五入

时间:2014-02-28 14:18:37

标签: excel numbers format rounding

我想在Excel中格式化大数字,只显示两个最高位数。剩余的数字将用额外的零填充。

示例:

1234567将显示为1 200 000

1234将显示为1 200

使用格式##“000”会将1234567显示为1 235 000但这不是我想要的,因为它不能缩放到一位数的数字。像1.2 M这样的解决方案并不是我想要的。

相同的格式应适用于这两个示例。我不想对数字进行舍入,而只是围绕显示的值(格式)。

3 个答案:

答案 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

如果更改值,则需要重新运行宏。