解決 Excel 轉 CSV 檔案的數字變為科學符號的問題

CSV 檔案內數字變為科學符號的問題。解決方式是 Excel 先建立新的一欄,儲存格的資料類型從「通用格式」改成「文字」。透過 TEXT() 函數複製貼上值。


問題狀況:

打開 CSV 檔案發現 12 位以上的數字變成科學符號,例如: 123456789012 變成 1.23457E+11

解決方式:

使用科學符號的好處是要呈現非常大或非常小的數值 (資料來源: 维基百科),壞處是如果需要精準地顯示每位數字,就會資訊遺失。例如 1E+11 在 Excel 可能代表是  100,000,000,000 ~ 100,000,009,999 範圍內的數字。因此需要找到儲存成 CSV 檔案前一步驟的原始 Excel 檔案。

1. 檢查儲存格數值是否還保留原始資訊

點選顯示科學符號的儲存格位置,確認原始資料還是科學符號的數值。如果原始資料已經不是原本數值,而是有科學符號的數值,則需要找更原始的資料才能進一步處理。



2. 使用 TEXT() 函數 還原數值

TEXT(儲存格位置, 0) 

第二個格式代碼 0 根據微軟文件原本用途是「如果數字的位數少於格式中零的個數,則這個小數預留位置會顯示無意義的零。。例如,如果您輸入 8.9,而想要把它顯示為 8.90,請使用 #.00 的格式。」因為原始資料數字位數大於 1,格式代碼 0 達到還原原本數字的目的。


3. 建立新的一欄,將資料類型從「通用格式」改成「文字」格式

4. 選取包含  TEXT() 函數的欄位後,複製該欄

5. 點選上方選單選擇「選擇性貼上」

6. 再貼上「值」到「文字」格式的新欄

Excel 另存 CSV 檔案,就不會有科學符號的問題。

如果是從資料庫產生 Excel 檔案,可以在欄位前加上單引號,強迫變成文字格式再輸出成 Excel 檔案。詳見 解決從資料庫輸出 Excel 檔案,遇到非常大數字的科學符號和有效位數的問題

其他問題

因為 Excel 本身精確度 (precision) 15 位有效位數的限制, 16 位以上 (含 16 位) 的數字,都會變成 0 [2]。例如 12345678901234567 顯示為 1.23457E+16 。如果點選儲存格,可以看到資料變成 12345678901234600。

如果要解決這個問題,同樣要看是否有原始資料。

版本資訊

Excel on Mac 版本 16.20, Office 365

參考資料


圖像來源
Free Photo of keyboard, office, desk - StockSnap.io (Thanks, Jeffrey Betts!)

留言