使用精确数字位数(Microsoft Excel)
Henk询问Excel中是否有一种方法可以使用六位数字显示数字,而与小数点的位置无关。例如,0.1将显示为0.10000,200将显示为200.000,25000将显示为25000.0。
不幸的是,没有格式可以解决问题。所有显示格式似乎都取决于小数点的位置。您可以设置显示格式为小数点后的特定位数,但是无论小数点前出现多少位数,都将使用该位数。
几个_ExcelTips_订阅者提出了一些建议,其中涉及使用公式显示所需的数字。例如,以下公式将使用六位数字显示A1中的值:
=FIXED(A1,IF(ABS(A1)<1,5,5-INT(LOG(ABS(A1)))),TRUE)
其他读者提供了一些公式,这些公式依赖于将数字转换为文本字符串并以此形式显示。但是,将数字转换为其文本等效项具有明显的缺点,即不再能够在其他公式中使用该数字。 (请记住,这是文本,而不是数字。)上式没有此限制。
如果需要,还可以使用宏在包含值的单元格中设置格式。这样的宏的优点是您不必为公式使用单元格,如上所示。宏的缺点是,只要它们中的值发生更改,就需要记住在单元格上运行它。以下宏是这种方法的示例:
Sub SetFigures() Dim iDecimals As Integer Dim bCommas As Boolean Dim sFormat As String Dim CellRange As Range Dim TestCell As Range bCommas = False 'Change as desired Set CellRange = Selection For Each TestCell In CellRange If Abs(TestCell.Value) < 1 Then iDecimals = 5 Else iDecimals = 5 - Int(Log(Abs(TestCell.Value)) / Log(10#)) End If sFormat = "0" If bCommas Then sFormat = "#,##0" If iDecimals < 0 Then sFormat = "General" If iDecimals > 0 Then sFormat = sFormat & _ "." & String(iDecimals, "0") TestCell.NumberFormat = sFormat Next TestCell End Sub
为了使用宏,只需选择要格式化的单元格,然后执行它即可。所选范围内的每个单元格都设置为显示六位数字,除非该单元格中的数字太大或太小。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(1933)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: