我和excel和日期有些纠结。情况如下:我们有一个每月报告,其中有许多选项卡,其中宏导入到一个中央电子表格中,它有大约120列。导入后,我需要在最后几个列中添加一些与数据相关但不包括在数据中的公式,其中之一是期间号(我们为客户端工作,从4月1日开始,在一年中有13段时间为4周)。为了配合这一点,我有一个单独的表与A列中的所有日期,然后句号和其他数据在下面的列。一个简单的Vlookup查找日期并返回句点。
然而,有些日期存储为文本(因此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"我从“日期和句点”中得到空白单元格,因为我知道它肯定是空白的。
现在,当我运行这段代码时,它对大多数值都有效。但是,对于E列中的所有日期,如果日期小于月份,例如4月1日、5月4日等,它就会左右切换日期和月份,而这不是格式,通过将日期更改为long date,我可以看到它已经改变了周围的数据。
有办法绕道吗?我一直在寻找解决方案,但我在搜索时所能找到的所有问题都与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发布于 2018-01-24 12:52:05
我将大量电子邮件文件导入数据库,这一直是一个问题。这个问题并不是由不正确的数据、糟糕的格式或诸如此类的东西造成的,而是因为excel中的一个错误(我相信微软称它为一个功能),它试图理解美国格式的日期,并自动“更正”查找中的任何内容。更糟糕的是,如果一个日期在美国格式中不起作用,那么它就会将它转换成一个文本文件,留下一些日期以一种方式格式化,另一种形式。
我找到的唯一解决方案是修改源表上的数据,使Excel无法以任何方式将其理解为日期,然后导入它,然后将其转换回来,这是一个巨大的phaff。微软请你解决这个问题,这是在浪费大量的时间编程解决方案!
https://stackoverflow.com/questions/25077178
复制相似问题