使用 VBA,我导入了一个 csv 文件并将一堆数据放入几列中。
其中一列有日期和时间。由于我需要能够仅使用这些单元格的“时间”部分,因此我尝试使用(以及几乎所有其他变体)将整个列转换为时间
Cells(x.y).EntireColumn.NumberFormat = "hh:mm:ss"
or
Range("C1").NumberFormat = "hh:mm:ss"
Range("C1").EntireColumn.NumberFormat = "hh:mm:ss"
但是,这不会转换整个列。我已经尝试了所有可能的其他方法来选择整个列并更改它(通过 VB),但仍然只有一部分保持转换。
如果我双击这些未转换的单元格并按 Enter,它们会更改为正确的格式。我意识到这是与计算有关的常见问题,但我的工作簿设置为自动计算,我也尝试在 VB 中设置它。这不会改变任何事情。
我能找到的唯一模式是当 Day 达到两位数时,单元格停止转换。例如:
Column C
01/05/2013 7:28:56
03/05/2013 13:24:53
07/05/2013 20:13:24
09/05/2013 8:29:22
12/05/2013 9:28:56
15/05/2013 21:14:25
17/05/2013 7:28:56
变成:
Column C
7:28:56
13:24:53
20:13:24
8:29:22
12/05/2013 9:28:56
15/05/2013 21:14:25
17/05/2013 7:28:56
在每个单元格顶部的公式栏中,它仍然显示所有单元格的整个日期和时间,不确定这是否相关,但就我必须使用时间执行的计算而言似乎并不重要。
本质上,我必须花时间为 C 列中的一个单元格和另一个单元格的时间(也是日期/时间格式)并检查差异。经过一番研究,我决定最好的方法是将所有单元格转换为时间格式,然后进行计算。
或者,我可以尝试将列转换为文本并使用拆分函数(使用空格作为分隔符)并拉出时间,但我也遇到了麻烦,因为再次尝试将整个列转换为文本停止日期的两位数。
感谢您阅读所有内容,任何想法和帮助将不胜感激。
编辑:意识到我的一些语法在我的帖子中是不正确的,但这在我的宏中是正确的
另一个编辑:我认为这肯定与日期格式有关......我刚刚意识到,在我格式化它们之前,日期是m/dd/yyyy
,然后当它到达实际的两位数天时,它会变为dd/mm/yyyy
,这就是问题发生的时候...