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文本到列 ,你会得到下面的对话框。 选中分隔符,然后点击。
在此屏幕上,select“ 其他”并在该字段中input句点,如下所示:
在这一点上,你可以点击完成,它会分裂成两列! 呜呼!
如果您想select目的地和格式的字段,请点击下一步。
花式!
哦,结果如下:
万岁,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¢。 对我来说,这比用公式改变单元格的值要好得多。