7

我似乎在使用 Excel 时遇到了一个相当简单的问题,尽管除了包含一个函数之外我找不到解决方案。

基本上我想在两个字段中显示价格,一个是美元,一个是美分。

我的工作正常,但我遇到的问题是,当我在美元字段中输入“24990.55”时,它会在美元字段中显示“24991”,在美分字段中显示“55” 。

有什么办法可以强制 Excel自动舍入?

4

11 回答 11

16

如果

A1 = 24990.55

然后

  • =INT(A1) 将返回 24990
  • =MOD(A1,1)将返回 0.55

您需要一个函数来截断小数点。Int()会这样做。Mod()将只显示小数点。

如果不使用函数,我不知道您期望什么行为。只是格式化一个数字不会改变它的基础价值。这意味着没有格式仅显示整数值并忽略不四舍五入的小数。Excel 不能那样工作。格式化为无小数点将始终包括四舍五入。要解决这个问题,您需要一个函数来截断小数。

如果您希望美分显示为整数,只需将Mod()结果乘以 100。

在此处输入图像描述

编辑:您在上面谈论函数,但阅读其他回复,我认为您的实际意思是例程、UDF 或其他宏。在提出问题时,您可能希望使用正确的术语。

你真的需要澄清你想要达到的目标。不清楚

  • 您想要输出的位置,例如,您是否希望在输入原始数字的同一单元格中得到结果?那么,美分应该去哪里呢?
  • 您希望美分显示为 0.55 还是 55?
  • 如果您希望值(美元和美分)显示在同一个单元格中,那应该是什么样的?
  • 如果您想要两个单独的单元格中的值,请指定美元的单元格和美分的单元格

只是在没有明确说明您的要求的情况下悬赏问题并没有多大帮助。

这是另一种方法,基于以下假设:

  • 在 A 列中输入带小数的值
  • 应更改 A 列中的值以仅显示美元(整数)
  • 该值的小数点将显示在 C 列中
  • 小数点将在 B 列中显示为整数

这可以通过以下更改事件宏来实现:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    On Error Resume Next
    Application.EnableEvents = False
    Target.Offset(0, 2) = Target - Int(Target)
    Target.Offset(0, 1) = (Target - Int(Target)) * 100
    Target = Int(Target)
    Application.EnableEvents = True
End If
End Sub

右键单击工作表选项卡,单击“查看代码”并将上述代码粘贴到代码窗口中。

当然,实现完全相同的事情,没有函数,没有宏,没有任何 VBA,可以用与在单元格中输入数字完全相同的击键次数来完成更简单的方法。

比较这两组击键

24990.55

24990Tab55

第二组击键会将美分放入自己的单元格中,将它们显示为整数。

对于您在此线程中收到的许多建议,我非常感谢您提供一些反馈。

于 2013-07-04T08:38:53.487 回答
3

您可以使用第二个单元格来计算该值。如果您的值在单元格 A1 中,则公式为

=A1-MOD(A1,1)

在此处输入图像描述

如果可以选择,请将您的数据输入放在一个工作表(选项卡)上,然后在您需要最终答案的地方输出未舍入的输出。

于 2013-07-12T18:19:04.157 回答
2

这是不可能的。但是,如果您想要一个奇怪的解决方案:

  • 假设值在 A1 中,在 B1 和 C1 中输入公式,见截图。
  • 插入一个文本框。在单元格 A1 上拖动以创建它时,按住Alt键使其完全适合单元格。
  • 单击文本框的边缘并=C1在编辑栏中键入。
  • 单击功能区上的 Align-Right 按钮;您可以右键单击“设置形状格式”以获取其他选项。
  • 将文本框格式化为白色背景,并且没有轮廓(边框)。
  • 您可以隐藏 C 列。

在此处输入图像描述

您可以将形状复制并粘贴到 A2 中,它会将公式更改为=C2. 如有必要,再次使用 Alt 键调整形状大小,使其适合单元格。

顺便说一句:我不推荐这种方法,但它是对您问题的(不寻常的)答案。

于 2013-07-12T19:11:32.183 回答
1

您可以将单元格格式化为一般或文本吗?这些格式不会四舍五入。

或者,您可以使用ROUNDDOWN美元单元格,以便它始终显示正确的美元数字。

您还可以使用类似的公式

=LEFT(A1,FIND(".",A1,1)-1)    

将美元和美分分成不同的单元格。有几种方法可以做到这一点。如果你愿意有点创意,它不需要复杂。

无论您采取什么路线,您都需要使用 3 个单元格而不是 2 个单元格。1 个单元格代表全部金额,1 个单元格代表美元,1 个单元格代表美分。如果您不打算使用代码来执行此操作,则必须有一个输入单元格和 2 个带有公式的单元格。

于 2013-07-15T19:53:02.147 回答
1

只是为了咯咯笑,这是另一种解决方案。

假设您在列中有现有数据,并且您想将美元和美分分成两个单独的列,您可以使用Text to Columns功能。

在 Excel 2007 中:

在数据选项卡上,选择文本到列

请注意,我们位于“数据”选项卡上。突出显示您的列,选择Text to Columns,您将看到以下对话框。选择分隔并点击下一步。

Excel 2007 文本到列向导,第 1 步,共 3 步

在此屏幕上,选择其他并在字段中输入句点,如下所示:

Excel 2007 文本到列向导,第 2 步,共 3 步

此时,您可以点击完成,它会将它们分成两列!呜呼!

如果要选择字段的目标和格式,请点击下一步。

eExcel 2007 文本到列向导,第 2 步,共 3 步

想要!

哦,结果如下:

美元和美分!

万岁,Excel!

于 2013-07-19T19:46:05.657 回答
0

TRUNC 函数不对数字进行四舍五入。... TRUNC 函数,截断函数的缩写,用于将数字的小数部分删除到集合中

于 2014-04-17T03:48:03.307 回答
0

实际上,您只需要使用左侧并查找,然后在查找后添加所需的小数位数。例如,=LEFT(H4,FIND(".",H4)+2)

于 2015-01-15T16:42:37.673 回答
0

要显示的小数位数可以在选项下的工具菜单中设置。在固定小数选项下选择小数位数。或者,您可以使用 INT 函数仅提取具有小数的值的整数部分。

于 2013-07-04T07:33:57.317 回答
0

不幸的是,如果没有功能,我看不出这是怎么可能的。

你想要的功能是TRUNC. 这只会删除您号码的小数部分。

于 2013-07-12T18:58:54.743 回答
0

据我了解,您需要显示这样的内容... 在此处输入图像描述

为了实现这一点,您需要格式化该单元格,并且您需要以格式执行此操作。 在此处输入图像描述

于 2013-07-17T13:12:19.570 回答
0

这绝对是可能的!有一个聪明的解决方法是使用数字格式将小数显示为整数,并且不更改单元格中的实际值。右键单击单元格并选择设置单元格格式。在数字选项卡上,转到自定义。

在自定义数字格式“类型”字段中复制/粘贴以下内容:

# ¢

然后键入此键盘组合:

CTRL + J

最后:

%

单击确定以保存自定义数字格式。然后将单元格格式设置为“换行”。

% 符号将数字乘以 100,因此您的 0.37 显示为 37。它还会在您不想要的格式中添加一个百分比符号。

CTRL + J 通过插入将百分比符号移动到单元格中的第二行的 CHR(10) 换行符来隐藏百分比符号。Excel 不会自动增加此单元格的行高,因此它保持隐藏状态。

最终结果是 0.37 的单元格值显示为 37 ¢。对我来说,这比使用公式更改单元格值要好得多。

于 2016-08-23T21:52:58.537 回答