为什么我的Excel电子表格将我的数字格式化为日期?

时间:2012-08-07 19:42:47

标签: excel vba excel-vba

我们有很多自动电子表格,可以提取数据,计算预测,发布网页等。这是一个非常混乱的系统,我很乐意重做它(比如说,真正的网络服务),但我们没有这样做的许可。

我们运行Excel 2007,大部分电子表格都转换为.xlsm s。

无论如何,由于我不知道某些原因,某些电子表格会将某些数字单元格格式化为看似随机的日期。正如您可能想象的那样,这个问题很难追查,通常我只会发现有人写了一封关于我们的数据阅读3-Feb-1901的讨厌的电子邮件时应该阅读400(显然Excel认为有1900年的闰年。)

我已经多次明确地将有问题的单元格设置为数字格式,但只发现它们在一周后填充了日期。

我已经扫描了宏(许多都在古代Excel 4.0 macro language中),它们似乎没有任何格式更改。所有复制/粘贴都以值的形式完成,不保留源单元格格式。

相关表格中没有条件格式规则。

Auto_Open子例程中根据需要添加一点VBA来格式化单元格似乎解决了这个问题。

这个修复程序是否足够好,或者在一周内我会发现日期格式出现在计算中间?如果没有,根本原因是什么以及如何解决它?

有一件事:我刚刚从this source读到Excel '07可能会自动将Normal个样式的单元格更改为[$-409]m/d/yy h:mm AM/PM;@格式。我改变的一些细胞肯定是Normal的样式,但显然不是全部。

2 个答案:

答案 0 :(得分:4)

我假设有问题的单元格是复制/粘贴数据或外部/查询数据的接收者?

每当您将粘贴的数据添加到excel中的单元格时,它就会运行例程来确定列为“常规”格式的任何内容的最佳格式,即使源是“常规”或“数字”。有时甚至将目标单元格设置为“数字”格式并不能解决此问题。但是我找到了让它按照您需要的方式工作的唯一方法是在粘贴/更新/刷新操作之前明确地将格式(在宏中)声明到相关的目标范围。

我也认为有一种方法可以在你的VBA中禁用日期识别,但我记不清确切的代码了。尝试在手动导入或执行更新时录制宏,您应该可以使用出现的内容。

编辑:刚刚进行了测试运行,并在连接字符串和目标之后添加:

.WebDisableDateRecognition = True

如果您从外部源中提取数据而不是复制/粘贴数据,那么这绝对应该可以解决问题。

答案 1 :(得分:0)

为了防止这种情况有所帮助,我遇到了一个问题,即excel自动将我从网页上拉出的信息格式化为DATE格式,修复,在导入窗口中,单击选项并取消勾选自动日期格式化选项,之后,我的数据导入完美!