Excel 2007数字没有小数点但不是自动舍入?

我似乎对Excel有一个相当直接的问题,但除了包含一个函数之外,我找不到解决scheme。

基本上我想显示在两个领域的价格,一美元和一美分。

我有这个工作正常,但我有的问题是当我在美元字段中说“24990.55”时 ,它会显示“24991”美元和“55”美分字段。

有什么办法可以强制Excel 自动轮回?

如果

A1 = 24990.55

然后

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

你需要一个函数来切断小数。 Int()将做到这一点。 Mod()将只显示小数点。

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

如果你想把美分显示为整数,只需将Mod()结果乘以100即可。

在这里输入图像描述

编辑:你在谈论上面的函数,但是阅读其他的反应,我想你实际上是什么意思是vba例程,UDF或其他macros。 提问时,您可能想要正确地使用术语。

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

  • 你想要输出的地方,例如你想在input原始数字的同一个单元格中输出结果吗? 那么美分应该到哪去呢?
  • 你想把美分显示为0.55还是55?
  • 如果你想要的值(美元和美分)显示在同一个单元格,应该是什么样子?
  • 如果你想在两个单独的单元格中的值,请指定哪些单元格为美元,哪些单元格为美分

只是在没有明确说明要求的情况下对问题进行奖励并没有多大帮助。

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

  • 带小数的值被input到列A中
  • 在列A中的值应该被改变以显示美元(整数)
  • 该值的小数点将显示在列C中
  • 小数点将在B列显示为整数

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

 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的情况下,实现完全相同的function,没有function,没有macros,更简单的方法可以使用与在单元格中input数字完全相同的按键次数来完成。

比较这两组按键

2 4 9 9 0 5 5

2 4 9 9 0 5 5

第二组击键将把美分放到他们自己的细胞中,显示为一个整数。

我真的很感谢你在这个主题中收到的很多build议的一些反馈。

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

 =A1-MOD(A1,1) 

在这里输入图像说明

如果它是一个选项,把你的数据input在一个工作表(选项卡),并输出未经取舍的输出,你需要最终的答案..

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

  • 假设该值在A1中,请inputB1和C1中的公式,参见截图。
  • 插入一个文本框 。 当你通过单元格A1拖动来创build它时,请按住Alt键,以便完美地适应单元格。
  • 单击文本框的边缘并在编辑栏中键入=C1
  • 单击function区上的右alignmentbutton; 您可以右键单击“格式形状”以获取其他选项。
  • 格式化文本框为白色背景,并没有大纲(边框)。
  • 你可以隐藏栏C

在这里输入图像说明

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

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

只是为了笑,这是另一个解决scheme。

假设您有列中的现有数据,并且想要将美元和美分分成两个单独的列,则可以使用“ 文本到列”function。

在Excel 2007中:

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

请注意,我们在“数据”选项卡上。 突出显示您的列,select文本到列 ,你会得到下面的对话框。 选中分隔符,然后点击。

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

在此屏幕上,select“ 其他”并在该字段中input句点,如下所示:

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

在这一点上,你可以点击完成,它会分裂成两列! 呜呼!

如果您想select目的地和格式的字段,请点击下一步。

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

花式!

哦,结果如下:

美元和美分!

万岁,Excel!

你可以将单元格格式化为普通文本还是文本? 这些格式不会四舍五入。

另外,你可以ROUNDDOWN你的美元单元,所以它总是显示适当的美元数字。

你也可以使用一个像

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

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

无论你采取什么方式,你需要使用3个单元,而不是2个单元,1个单元,1个单元。 如果您不打算使用代码来执行此操作,则必须有一个input单元格和两个带有公式的单元格。

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

不幸的是,我不明白这是不可能的,没有function。

你想要的function是TRUNC 。 这将简单地删除您的号码的小数部分。

据我了解,你需要显示这样的东西… 在这里输入图像说明

而为了达到这个目标,你需要格式化这个单元格,并且你需要这样做。 在这里输入图像描述

TRUNCfunction不会舍入数字。 TRUNC函数是截断函数的缩写,用于删除一个数字的小数部分

真的,你只需要使用左边,然后find,然后添加你想要的小数点后查找。 例如, =LEFT(H4,FIND(".",H4)+2)

这是完全可能的! 有一个巧妙的解决方法,使用数字格式显示小数为整数美分,而不改变单元格中的实际值。 右键单击该单元格,然后select格式单元格 在数字选项卡上,转到自定义。

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

 # ¢ 

然后键入这个键盘组合:

 CTRL + J 

最后:

 % 

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

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

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

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