我有一張看起來像這樣的表 -
A | B | C
----------------------
2 | Okay | 0
3 | Not okay | 0
單元格C3
有綠色的錯誤指針,並顯示“此單元格中的數字格式為文字或前面帶有撇號”,當然它是左對齊的。
C2
當我顯示儲存格和 的格式時C3
,它們都顯示為「常規」。
當我使用VBA檢查“NumberFormat”時,兩者都顯示為“General”。
順便說一句,我正在使用 Office 2010。
我想透過使用VBA 程式碼將格式從文字更改為常規來整理此問題(這種情況發生在多個工作表中的數十個單元格中),但是如果它認為相關單元格已格式化為常規格式,我該怎麼做?
答案1
當 Excel 認為數字儲存為文字(即使它說不是,即使您將格式變更為數字)時,可能會發生這種情況,因為它在另一端編碼錯誤。
對於以文字形式儲存的數字,一個非常簡單的解決方法是添加一個額外的列,其中包含將數字轉換為數字的公式。
=$C2*1
只需將其拖下來,然後引用即可。如果您正在使用即時連接的表,則此列位於表末尾將意味著公式範圍將隨著資料範圍而擴展。
當然,使用 VBA,您可以運行一個循環,遍歷數據,並用該公式的結果替換列中的每個值。
答案2
下面是一個可以解決這個問題的 VBA 片段。
Sub FixTextFormattedNumbers()
Dim s As Worksheet, r As Range
'Set target sheet and range
Set s = Sheets("Sheet1")
Set r = s.Range("A1:A10")
For Each c In r
On Error Resume Next
c.Value = CDbl(c.Value)
Next c
End Sub
錯誤處理只是為了防止您在指定範圍內有實際文字。
答案3
複製貼上或匯入資料時經常會發生這種情況。如果它是一整列,修復它的最佳方法是基本上重新匯入該列,並更好地控制 Excel 對資料類型的假設。
這樣做的方法是:
突出顯示存在此問題的專欄
選擇
Data
->Text To Columns
按
Finish
一下(預設適用於這種情況 - 它們是“分隔”->“製表符”->“常規(格式)”)。如果您必須執行相反的操作(重新匯入數字但強制將它們視為文字),您可以將第三個選項變更為文字