Excel会将date低于月份的date(如4月2日)更改为反向date(例如,4月2日)

我有一些与excel和date可圈可点的。 情况如下:我们有一个包含多个标签的月度报告,这个标签会导入到一个中央电子表格中,它有大约120列。 导入后,我需要在最后几列中添加一些公式,这些公式与数据相关但是没有包含在数据中,其中一个是期号(我们为一个客户工作,从4月1日和13日开始一年中的4周)。 为了实现这一点,我有一个单独的表A列中的所有date,然后在以下列中的期间和其他数据。 一个简单的Vlookup查找date并返回期间。

然而,一些date来作为文本存储(所以vlookup有#N / A),简单的修复,粘贴特殊 – 添加一个空白单元格,瞧它的工作原理。 而且,如果我手动执行这个工作。 但是这意味着要为用户做所有的工作,所以我试图按照下面的代码来编程:

'Sheets("dates and Periods").Activate 'Range("P1").Copy 'Sheets("Data").Activate 'Range(Cells(2, 5), Cells(lastrow, 5)).PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd 'Range(Cells(2, 5), Cells(lastrow, 5)).NumberFormat = "dd/mm/yyyy" 

我从“date和时间”中得到空白单元格,因为我知道它肯定是空白的。

现在,当我运行这个代码时,它适用于大多数值。 然而,对于列E中当天小于该月份的所有date,例如,4月1日,4月4日等,它切换date和月份,这不是格式化,通过改变为长期date,我可以看到它已经改变了周围的数据。

有没有解决的办法? 我已经find了一个解决scheme,但是我发现search时遇到的所有问题都与1904年的date系统或格式有关。

任何帮助,将不胜感激。

解决scheme:[将其拆分成几部分并放回原处]

 For Each cell In Range(Cells(2, 5), Cells(lastrow, 5)) cell.Value = Mid(cell, 4, 2) & "/" & Left(cell, 2) & "/" & Right(cell, 4) Next cell 

我有这个问题多次。 答案通常是特定于解决scheme,但是您可以尝试将date转换为dd-mmm-yyyy格式的string,然后再返回。

在Excel单元格中input看起来像date的内容时,将根据Windows区域设置对其进行分析。 不适合的string被input为文本,string会变成Exceldate。 后者通常不会与预定date相同。

我build议在导入过程中纠正这一点。 具体如何做到这一点取决于你没有包括的细节,但是这个过程是使用数据/导入过程,并通过文本导入向导。 该向导将允许您指定每列的格式; 包括E的date格式。这将确保您所有的date被Excel正确理解为date。 所以如果传入的date格式是MDY,你可以指定MDY; Excel将正确存储它,然后以默认设置或以任何方式显示该列。

如果可行,另一种select是更改报表生成器,以便生成date格式与Windows区域设置的短date格式相同