防止Excel将数字范围转换为日期格式

时间:2017-10-03 22:57:35

标签: excel-vba vba excel

我正在使用Excel将数据从一个输出.csv文件的系统转换为另一个可以读入.xls文件的系统。一列是大小,通常包括4-6,6-8等术语。当在Excel中打开csv时,它们会自动(?)转换为日期(6月4日,8月6日等)I可以使用 .NumberFormat =“m-d” 获取数据*看起来应该如此,但当然它仍然是一个日期值,我尝试用它执行的任何操作都会转换回日期。有没有办法将其转换为完全相同格式的文本?如果我将.NumberFormat声明为“@”,它只是将值更改为序列。我使用大小以及其他几个列为库存目的创建一个长产品ID代码....当大小更改为日期值时,我最终错过了一些数据。

1 个答案:

答案 0 :(得分:0)

我找到了一个完全由VBA运行的问题的解决方案 - 即,不依赖于特殊的导入条件。我会很感激任何指针或建议,特别是如果这有可能产生无法预料的错误:

Dim Size as String
For i = 2 To LastRow
    If IsDate(Range("H" & i).Value) Then
        Size = Month(Range("H" & i)) & "-" & Day(Range("H" & i))
        Range("H" & i).NumberFormat = "@"
        Range("H" & i) = Size
    End If
Next i

I列测试包括字符串(XL,SM,12T等)的大小值,以及转换为日期的值(4-6,6-8)。此似乎将其转换回字符串值,然后在将来的所有使用(连接和逻辑测试)中将其正确地视为字符串值