2017-08-10 48 views
2

今天早些時候我正在使用.trim()vba函數清理數據。雖然它造成。要改變,我不知道爲什麼。Excel VBA .Trim功能更改。到,

Cells(rw, j).Value = Trim(Cells(rw, j).Value) 

是我做到了,如下改變值:

5.2 - > 5,2

有人可能會認爲,這是由於本地設置,儘管是同一列中包含的值像3(6.1)這些沒有搞砸。

在此先感謝

+0

嘗試使用'Cells(rw,j).Value = Trim(Cells(rw,j))' – Shrikant

+0

該單元格的'.NumberFormat'是什麼? – braX

+0

我敢打賭我的房子是本地設置。 '3(6.1)'保留小數點的原因是,我敢肯定,這個值將被解釋爲一個字符串。 – Ambie

回答

3

轉到文件 - 選項 - 高級,尋找使用系統分隔符。你想要小數點分隔符。和千位分隔符是,

您可以在VBA使用下面的代碼也更改這些:

Application.DecimalSeparator = "." 
Application.ThousandsSeparator = "," 
Application.UseSystemSeparators = False 

當你不想改變到這些設置,更改您的代碼:

Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Text) 

.Text將爲您提供單元格內容的字符串版本,而不是嘗試將其轉換爲數字(如果它看起來像一個數字)。

+0

就是這樣,我的小數點分隔符是一個逗號,儘管這個列需要被解釋爲一個字符串。 – Iso

+0

看到新的更新,它應該解決問題。 –

+0

即使使用第二種解決方案,錯誤仍然存​​在。 – Iso

1

如果你不想改變你的全球系統/ Excel中的這一個應用程序設置,你可以嘗試迫使價值的東西,如文本:

With Cells(rw, j) 
    .NumberFormat = "@" 
    .Value = Trim(Cells(rw, j).Value) 
End With 

另外,根據您的評論:

With Cells(rw, j).Value = "'" & Trim(Cells(rw, j).Value) 
+0

將NumberFormat應用於整列,沒有運氣。 – Iso

+0

增加了另一個建議。 –

+0

仍然沒有運氣。已經在這個2個小時了,它正在讓我緊張。 – Iso

0

你可以試試這個:

Dim temp As String 
temp = Cells(rw, j).Value 
temp = Trim(temp) 
Cells(rw, j).Value = temp 

可惜我不能測試它。