2015-04-04 75 views
2

我的情况如下:禁用Microsoft Excel自动格式化日期

我从包含日期列的.CSV文件导入数据。出于我自己的原因(我必须稍后再次处理数据),我希望日期列保留为String类型变量,直到稍后进行我自己的处理。

因此,我从数据选项卡下的文本导入数据,选择我的分隔符,并选择列数据格式为文本。当数据被移植时,一切似乎都很好。

现在因为数据是“不洁净”的,日期字段在前面和后面都有空格。因此,没有问题:我编写一个宏修剪()中的值,该值变为这样:

Dim v As String 
v = Cells(Row, col).Value 
v = Trim(v) 
Cells(Row, col).Value = v 

随着环路按需要重新定义行和col。

问题是这样的:一旦宏运行,Excel会将生成的字符串识别为日期格式,并将该单元格的值转换为日期格式的字符串。我怎样才能把它作为一个字符串值?

回答

3

尝试:

Dim v As String 
v = Cells(Row, col).Value 
v = Trim(v) 
Cells(Row, col).Value = "'" & v 

如果你在前面加上一个单引号单元格的值,Excel将其当作一个字符串。

您还可以使用:

Dim v As String 
v = Cells(Row, col).Value 
v = Trim(v) 
Cells(Row, col).NumberFormat = "@" 
Cells(Row, col).Value = v 
+3

我只是打字第二个选择。你是个快人。另外@ wakka02,避免使用'Row'这样的保留关键字作为你的变量名称。会造成严重破坏。 – 2015-04-04 04:24:32

+0

NumberFormat选项效果非常好! :)如果我可以问,那是什么意思? @BranislavKollár,是的,我知道,但这实际上是整个Excel表中唯一的方法,所以我有点懒得挑名字。 :P感谢评论,但! – Wakka02 2015-04-04 05:47:53

+1

@ Wakka02如果你的意思是“@”,那么这就是“文本”格式的符号。你可以在Excel中检查这个,点击单元格,Ctrl + 1,选择文本作为数字格式,并立即改变为自定义。您将在“类型”字段中输入“@”。要了解更多信息,您可以看到[MS支持页面](https://support.office.com/zh-cn/article/Create-a-custom-number-format-78f2a361-936b-4c03-8772-09fab54be7f4?ui= EN-US&RS = EN-US&AD = US) – 2015-04-04 11:07:06