Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel似乎只更改了某些列的格式_Excel_Format_Vba - Fatal编程技术网

Excel似乎只更改了某些列的格式

Excel似乎只更改了某些列的格式,excel,format,vba,Excel,Format,Vba,使用VBA,我导入一个csv文件并将一组数据放入几列中 其中一列有日期和时间。由于我需要能够只使用这些单元格中的“时间”部分,所以我尝试使用(以及几乎所有其他变量)将整个列转换为时间 但是,这不会转换整个列。我尝试了所有其他可能的方法来选择整个列并对其进行更改(通过VB),但是仍然只有一部分仍然被转换 如果我双击这些未转换的单元格并按enter键,它们将更改为正确的格式。我意识到这是一个与计算相关的常见问题,但我的工作簿设置为自动计算,我也尝试过在VB中设置它。这不会改变任何事情 我能找到的唯一

使用VBA,我导入一个csv文件并将一组数据放入几列中

其中一列有日期和时间。由于我需要能够只使用这些单元格中的“时间”部分,所以我尝试使用(以及几乎所有其他变量)将整个列转换为时间

但是,这不会转换整个列。我尝试了所有其他可能的方法来选择整个列并对其进行更改(通过VB),但是仍然只有一部分仍然被转换

如果我双击这些未转换的单元格并按enter键,它们将更改为正确的格式。我意识到这是一个与计算相关的常见问题,但我的工作簿设置为自动计算,我也尝试过在VB中设置它。这不会改变任何事情

我能找到的唯一模式是,当一天达到两位数时,单元格停止转换。例如:

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 
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列

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 
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
,这就是问题发生的时候…

为了避免混淆,并且由于日期似乎总是占据相同的宽度,我建议

1) 将此列作为文本导入

2) 然后看一下整个专栏

For Each C In Range("A:A").Cells
    If C <> "" Then
        ' ....
    End If
Next C
适用于范围内的每个C(“A:A”)。单元格
如果是“C”,则
' ....
如果结束
下一个C
3) 切掉前面的11个位置,例如
C=Mid(C,11,99)

4) 将剩余字符串转换为时间,例如,
C=CDate(C)
(…是的,它也适用于时间,因为时间是日期的小数部分)


或者,您可能希望捕获日期部分并使其成形。有关使用工作表公式的一些想法,请参阅。

为了避免混淆,并且由于日期似乎总是占据相同的宽度,我建议

1) 将此列作为文本导入

2) 然后看一下整个专栏

For Each C In Range("A:A").Cells
    If C <> "" Then
        ' ....
    End If
Next C
适用于范围内的每个C(“A:A”)。单元格
如果是“C”,则
' ....
如果结束
下一个C
3) 切掉前面的11个位置,例如
C=Mid(C,11,99)

4) 将剩余字符串转换为时间,例如,
C=CDate(C)
(…是的,它也适用于时间,因为时间是日期的小数部分)


或者,您可能希望捕获日期部分并使其成形。有关使用工作表公式的一些想法,请参见。

对于具有一位数天数的单元格,公式栏中是否识别
dd/MM/yyyy
格式?看起来Excel可能认为它类似于
MM/dd/yyyy
。检查您的区域设置,您可能需要首先调整日期。您可能是对的,我忘了在转换后的单元格中提到,在公式栏中,它反转了天/月数。嗯,我检查了windows区域设置-所有这些看起来都不错。短格式设置为dd/mm/yyyyy是否为公式栏中识别的具有一位数天数的单元格的
dd/mm/yyyy
格式?看起来Excel可能认为它类似于
MM/dd/yyyy
。检查您的区域设置,您可能需要首先调整日期。您可能是对的,我忘了在转换后的单元格中提到,在公式栏中,它反转了天/月数。嗯,我检查了windows区域设置-所有这些看起来都不错。短格式设置为dd/mm/yyyyThanks!是的,它确实有助于将这些单元格作为字符串导入。目前情况似乎还不错。谢谢你的时间!谢谢大家!是的,它确实有助于将这些单元格作为字符串导入。目前情况似乎还不错。谢谢你的时间!