我有以下問題。
我的一張作業表包含一列,其中包含存盤為文本的值(例如,存盤為文本的 1,22 值)。目前我使用以下代碼將這些條目轉換為值:
Sub Convert()
Range(Cells(2, "K"), Cells(Rows.Count, "K").End(xlUp)).TextToColumns DataType:=xlFixedWidth, DecimalSeparator:=","
End Sub
如果我運行宏一次結果很好。但是,如果我第二次運行宏(在我已經使用上面顯示的代碼將文本轉換為值之后)。數字的格式從逗號“,”作為小數點分隔符更改為點“。” 作為小數分隔符(例如 1,22 --> 1.22)。
這是一個問題,因為我的地區使用逗號。
有誰知道如何防止這種情況發生?
親切的問候 草帽
這里截圖:
原始資料@

第一次 text2columns 之后:

在第二次 text2columns 之后:

uj5u.com熱心網友回復:
您的原始資料是字串,運行TextToColumns會將它們轉換為數字。當您TextToColumns第二次運行時,Excel 需要先將這些數字轉換為字串。
我只能猜測這種轉換的內部邏輯,但如果這不使用任何區域設定,我也不會感到驚訝。
無論如何,我會說TextToColumns在數值上使用該命令不是一個好主意。使用過濾器僅獲取包含文本的單元格:
Dim r As Range
set r = Range(Cells(2, "K"), Cells(Rows.Count, "K").End(xlUp))
On Error Resume Next ' To prevent runtime error "No cells found"
Set r = r.SpecialCells(xlCellTypeConstants, xlTextValues)
If err.Number = 1004 then exit sub
On Error Goto 0
r.TextToColumns DataType:=xlFixedWidth, DecimalSeparator:=","
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/330827.html
上一篇:如何根據參考表中的資料,根據表中的多個查找值找到我需要的代碼
下一篇:如何回圈遍歷Excel行
