我正在尝试从工作簿中提取数据,因为我将工作簿设置错误但我想保留数据。所以我必须浏览每个工作表并提取我需要的特定数据位。 (重复任务=救援的vba代码)
我已经完成了,但我有一个讨厌的小问题。
我正在使用ws.Range(“C13”)来提取我需要的每个单元格。这是一个时间值如10:00或22:13的单元格。当我调试该值时,我得到一个小数。为什么?如何防止它将我的“10:30”转换为“0.4375”
据我所知,小数甚至与时间值无关。 错误它只是作为24小时时段表示的时间值。所以它是相关的。但仍然。
答案 0 :(得分:7)
ws.Range("C13")
相当于ws.Range("C13").Value
,它返回该单元格中的基础数据。
如果您使用ws.Range("C13").Text
,您将从单元格中获取显示的文本。如果您为该单元格设置了特定的日期/时间格式,则调用ws.Range("C13").Text
应该返回该特定格式的文本
答案 1 :(得分:2)
时间值是正确的;这是Excel在内部存储日期和时间值的方式。
日期存储为浮点值,其中整个部分表示自12/30/1899 00:00.00
(日期0.0
)以来的天数,小数部分表示单日的小数部分(例如, 408875.5
代表11/28/2011 12:00:00 PM
)。
以下是一些您可能会觉得有用的转化因素:
Decimal value Time Value Calculation
============= ========== ===========
0.00094444444 12:01:00 AM 1.0 / 24 / 60 (1 day/24 hours/60 minutes per hour)
0.01041666666 12:15:00 AM 1.0 / 24 / 60 * 15
0.02083333333 12:30:00 AM 1.0 / 24 / 60 * 30
0.04166666666 01:00:00 AM 1.0 / 24
答案 2 :(得分:0)
hours = MOD(INT(0.tttttttt*24), 24)
minutes = MOD(INT(0.tttttttt*24*60), 60)
seconds = MOD(INT(0.tttttttt*24*60*60), 60)
milliseconds = MOD(INT(0.tttttttt*24*60*60*1000), 1000)