小数仍在公式栏视图中(不在单元格视图中) - 需要四舍五入并删除

小数仍在公式栏视图中(不在单元格视图中) - 需要四舍五入并删除

我有一个 ID(数字格式),其源数据中有尾随小数。我需要保留舍入后的数字(见附件示例)并从数据中删除尾随小数。小数导致我使用的系统出现上传问题/错误。

我尝试过格式化为数字并删除小数位、=INT、=ROUND 等,我可以让单元格视图反映我想要的内容,但当我单击单元格时,公式栏仍然会保留尾随小数。我该如何删除这些?提前致谢!

例子

答案1

使用 VBA。

  1. 按 ALT+F11 打开 VBA 编辑器。
  2. 在菜单上,单击工具 -> 引用。添加“Microsoft VBScript Regular Expressions 5.5”,然后单击确定。

在此处输入图片描述

  1. 添加以下代码:
Sub SetToInteger()

    Dim lastrow As Long
    'Get last row with value of column A
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
            
    'Loop through the values
    For i = 1 To lastrow
        Range("A" & i).Value = Int(Range("A" & i).Value)
    Next i

End Sub

  1. 按 F5 运行代码。

答案2

当然,VBA 可以通过多种方式来实现这一点,其中一些比其他答案的方法更简单。

在告诉你“唯一”的方法之后,我会告诉你另一个想法,它基于你在问题中写的内容。如果它能被使用,那么它就是所有想法中最简单、最好的。

因此,如果您想要一种“纯” Excel 方法,则可以使用名为“显示精度”的功能。

为了节省您的时间,如果您只希望一组单元格执行此操作,但希望其他单元格正常运行,它们的小数部分不会以这种方式被删除 — 换句话说,您对整个电子表格中的这项功能有混合需求,因为这会影响整个电子表格,而不仅仅是工作表,停止现在,因为这不会让您同时拥有这两种行为。它要么是以下行为,要么是您在 Excel 中遇到的常见行为……不是两者。

Precision As Displayed(从现在开始为“PAD”)将允许您输入一个值,但是在应用您所做的数字格式选择后,它不仅会按格式化显示条目,还会将条目永久更改为您所看到的内容。

因此,如果您将格式设置为仅整数部分,Excel 将像平常一样执行此操作,包括以通常的方式使用四舍五入,但随后将永久地、破坏性地(原始条目将被完全替换),用精确显示的值替换实际条目。

然后,任何查看公式编辑栏的人都不会看到输入的小数部分,因为它消失了。不是隐藏:是消失了。

这也意味着对单元格值的引用也会返回该值。因此,某些人不可能巧妙地编写一个快速公式(如“=A1”)并查看原始条目,因为它不再存在。

如果你能让电子表格中任何地方都发生这种情况,那么它对你来说就很好了。但是如果你还必须有通常的行为,那么它对你没有任何好处。

您可以做一些其他的事情,包括清空公式编辑栏,但它们会保留原始条目,以便这些条目随后用于下游计算,也可以使用简单的“=A1”公式查看它们。

如果您好奇为什么存在此设置,那是为了与已有 35 年历史的电子表格向后兼容……说真的……而且当您想使用临时计算时,它也很有用,因为它们会按显示方式显示,而无需在所有内容上分层舍入函数。例如,工资单。计算社会保障的退休税,您不希望有 $103.56883264 这样的值在流程计算的后面使用。由于您可能会忘记使用舍入公式,或者不想使用,因此您需要其他方法强制永久更改为 $103.57(或 $103.56),然后稍后干净地使用。

无论如何,要设置此功能以供使用,您需要转到并向File | Options | Advanced下滚动到几乎底部。它位于从底部开始的第四个分组中,名为When calculating this workbook:,其中的第二个选项。只需选中该复选框即可。

如果您精通 VBA,我建议您使用它来处理这个问题。如果不熟练,那么让别人为您编写这个程序就很容易了,而且似乎不需要花太多钱。或者有人可能会像其他答案中那样免费编写。但如果“PAD”适用于整个电子表格,那么它就能很好地完成这项工作。

现在我提到的想法。

您似乎有这种需要,因为信息被导出到“您使用”的另一个系统。这很重要,更重要的是,听起来您就是这个目的的用户,而不是为用户提供导出或让他们自己导出。

一个非常容易做到的事情是在电子表格中有一个工作表来反映您想要导出的数据。因此,您可以保留其他所有内容,并像现在一样使用它,然后您可以做任何您现在要做的事情来组织导出(可能对数据进行排序,删除一些数据,等等:您将到达的下一步就是以与现在完全相同的方式执行导出的地步)。

然后,您将转到镜像页面,它应该设置为显示与您通常导出的位置完全相同的数据和排列。

但有一个例外。对于镜像页面上显示此 ID 号的数据列,您可以使用函数TEXT()强制该列采用所需的格式,而不是简单地使用“=Sheet1!A1:A10000”。原始数据将保持原样,带有小数部分,但镜像页面上即将导出的数据将完全是四舍五入的整数,绝对没有小数部分。因此公式可能如下所示:

=TEXT(  Sheet1!A1:A10000,  "0"  )

或者任何你喜欢的确切格式,尽管那个格式可以做到这一点。

然后从镜像页面进行导出,因此整数 ID 号就是导出的内容。

(为了您在检查所有内容是否均存在时感到方便,您可以使用Copy一行原始数据,然后到这里选择范围,然后使用Paste | Special | Formats (and even column widths to make it reallllly look the same)以使格式相同。)

如果您不是此电子表格的唯一用户,那么事情就会变得更加复杂,因为您必须处理其他用户的技能和舒适度。在某些时候,他们可能会压倒这个想法并让您倒霉。当然,如果在导出之前还有其他用户,您必须判断这一点。但如果他们只是在导出之后,在其他程序中,而不是在这个电子表格中,您可以使用这种方法非常轻松、非常干净地解决问题。

相关内容