当使用公式将多个单元格的内容合并到一个单元格中时,Kris很难让Excel保留原始单元格的格式。例如,假定单元格A1和B1分别包含1和0.33。在单元格C1中,他输入以下公式:

=A1 & " : " & B1

单元格C1中的结果如下所示:

1:0.3333333333

生成的C1与B1(0.33)中显示的结果不匹配的原因是,B1中的值实际上不是0.33。在内部,Excel会将值保持为15位,因此,如果单元格B1包含诸如= 1/3的公式,则在内部将其保持为0.33333333333333。但是,您在单元格B1中看到的内容取决于单元格的格式。在这种情况下,格式可能设置为仅显示小数点后两位。

但是,有几种方法可以在单元格C1中获得所需的结果。一种方法是简单地修改您的公式,以便格式化从单元格A1和B1提取的值。例如,以下示例使用TEXT函数进行格式化:

=TEXT(A1,"0") & " : " & TEXT(B1,"0.00")

在这种情况下,A1的格式仅显示整数,而B1的格式仅显示小数点后两位。您也可以使用ROUND函数获得类似的结果:

=ROUND(A1,0) & " : " & ROUND(B1,2)

另一个可能的解决方案是更改Excel如何处理工作簿中的精度。请按照下列步骤操作:

。显示“ Excel选项”对话框。 (在Excel 2007中,单击Office按钮,然后单击Excel选项。在Excel 2010或更高版本中,显示功能区的“文件”选项卡,然后单击“选项”。)

。单击对话框左侧的“高级”选项。

。滚动浏览可用选项,直到看到“计算此工作簿时”部分。 (请参见图1。)

。确保选中设置显示精度为复选框。

。单击确定。

现在,Excel会在其所有计算和级联中使用屏幕上显示的精度,而不是使用通常保持的全15位精度进行计算。尽管此方法对于某些用户可能是可接受的,但对于其他用户而言,它将带来比解决的问题更多的问题。您将需要确定是否可以降低精度,以便以期望的方式格式化输出。

还有另一种方法是创建您自己的用户定义函数,该函数将返回目标单元格显示的内容,而不是那里存储的内容。在这方面,以下宏将非常有用:

Function FmtText(rng As Range)

Application.Volatile     FmtText = rng.Cells(1).Text End Function

要使用此宏,您可以在工作表中使用以下公式:

=FmtText(A1) & " : " & FmtText(B1)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8886)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: