2015-04-04 35 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