Excel改变日期,日期低于该月(例如4月2日)到反向(例如2月4日)

StackOverflow https://stackoverflow.com//questions/25077178

  •  02-01-2020
  •  | 
  •  

我有一些替代品和日期。情况如下: 我们有一个报表报告,其中许多选项卡将宏导入中央电子表格,它有大约120列。导入后,我需要在与数据相关但不包括在数据中的最终几列中添加一些公式,其中一个是期间号码(我们在第1次和13年开始为年份的客户工作年度4周的时间)。要为此通知,我有一个单独的表,其中包含列A中的所有日期,然后在下列列中的句点和其他数据。一个简单的vlookup查找日期并返回句点。

但是,某些日期存储为文本(因此Vlookup具有#n / a),简单修复,粘贴特殊 - 添加空白单元和voila它的工作。如果我手动这样做,这确实有效。但这意味着要为用户做所有的所有工作,因此我试图根据下面的代码编写以编程方式进行,如下所示:

'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"
.

我从“日期和周期”中获取空白单元,因为我知道它肯定是空白的。

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

有没有办法?我寻找一个解决方案,但在搜索与1904年的日期系统或格式化时,我可以找到的所有问题。

任何帮助都会受到赞赏。

解决方案:[将其分成零件并将其放在一起]

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
.

有帮助吗?

解决方案

我有很多次出现这个问题。答案通常是特定于解决方案的,但您可以尝试将日期转换为DD-MMM-yyyy格式的字符串,然后再次返回。

其他提示

当您输入看起来像excel单元格的日期时,它将根据Windows区域设置解析它。不适合的字符串作为文本输入,字符串会变成Excel日期。后者通常与预期日期不一样。

我建议在导入过程中纠正这一点。究竟如何执行此操作取决于您未包含的细节,但此过程是使用数据/导入进程并通过文本导入向导。该向导将允许您为每列指定格式;包括E.的日期格式,这将确保Excel作为日期正确地理解您的所有日期。因此,如果收入日期格式是MDY,则会指定MDY; Excel将正确存储它,然后在默认设置中显示它,或以任何方式格式化该列。

另一个选项(如果是可行的)将是更改报表生成器,以便它生成与Windows区域设置的短日期格式相同格式的日期

我将大量的文件通过电子邮件发送到数据库,这是一致的问题。这个问题不是由错误的数据,错误的格式或任何此类事物引起的,但只需在Excel中的错误(我相信Microsoft称之为一个功能),在那里它试图了解美国格式的日期,并自动“纠正”任何东西发现。它是更糟糕的,因为如果日期不适用于美国格式,那么它将它转换为文本文件,让您使用某些日期格式化某种方式。

我发现的唯一解决方案是改变源表上的数据,以便Excel无法以任何方式将其视为日期,然后导入它,然后将其转换回来,一个巨大的phaff。微软请解决这个问题,它正在浪费这么多时间编程解决方法!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top