我正在使用VBA将多个工作簿中的大量数据导入到多个工作表中,然后再处理这些数据。
WorkFlow:当我将数据拉入我的工作簿时,我首先将所有数据放入数组中,然后将它们输出到我的工作表中。
当我提取数据时,我注意到一些“小时”或“工作订单号”数据以日期或日期时间的形式被拉入我的阵列,当时它们应该是某种数字格式。
e.g.:
I should be getting:
Number of Hours: 2; Work Order Number: 41235612
Instead, I am getting:
Number of Hours: 0-Jan-00 (equivalent to 1/0/1900, which was originally entered as "0")
Work Order Number: 0-Jan-00
我发现问题出在源文档中,当首次作为普通数字输入时,Excel可能会自动(尽管不正确地)将这些单元格值转换为日期类型形式。
我宁愿不在源文档中进行任何更改,只需格式化我拉动它们时的值。
答案 0 :(得分:1)
您可以使用Range().value2
代替.value
属性
.value2
不接受货币和日期格式,因此它应该正确读取您的小时值。
例如,单元格A1的值为2,并以日期格式保存。
所以Range("A1").value
将返回日期值“1/2/1900”
Range("A1").value2
将返回您可以保存在数组中的数值2.
您可以使用Clng()
或CDbl()
格式化值。
例如:
CDbl(Range("A1").Value)
但是如果单元格具有非数字值,例如文本,则代码会抛出错误!
您可以使用.NumberFormat
属性
Range("A1").NumberFormat = "General"