2013-02-07 74 views
2

我試圖格式化一個單一的數字存儲爲文本值。使用TEXT公式字符限制進行字符串轉換?

例如,我想轉換:

要:

5145-350002-00500-0080

公式我現在用的就是:

=文字(A1,「0000-000000-00000-0000」)

我收到的輸出是:

5145-350002-00500-

爲什麼最後4個字符「0000」,而不是「0080」爲我所期望的?是否有字符限制,還是我的公式不正確?從Large Number Arithmetic

+0

當我嘗試在單元格中輸入類似「5145350002005000080」的值作爲一個數字, Excel將其轉換爲5145350002005000000.這個數字是5 sextillion和一些變化。 我懷疑這對Excel來說太簡單了,我認爲它默認情況下會轉換爲科學記數法,這可能會導致不希望的舍入/截斷值。 –

+0

@DavidZemens爲答案增加了可能的解決方案。 –

回答

3

報價:

在Excel中的限制是在15個顯著數字。輸入一個16位的 信用卡號和123456789將成爲 123456789.

其實,即使514535000200500 將導致5145-350002-00500-0000

而且,看看公式欄當選擇你的輸入單元格 - 我的Excel 2007年,我看到:

Excel number limit

希望這是有益的)

編輯:

作爲解決方案來解決任務 - 保持您的數字格式爲文本並使用以下公式:

=LEFT(A1,4)&"-"&MID(A1,5,6)&"-"&MID(A1,11,5)&"-"&RIGHT(A1,4) 
+1

投了贊成意見重新:有效數字,但這並沒有解決如何將值轉換爲「5145-350002-00500-0080」 –

+0

的問題謝謝你的解釋/解決方法,但是,正如我在原始問題的值存儲爲TEXT,而不是數字值。 – toolshed

+0

@Addikt我不知道函數是如何工作的,但也許它會將數字字符串變成數字 - 然後上述所有應用... –

2

這是一個自定義函數。將其放置在工作簿中的常規代碼模塊,您可以通過= FormatLargeNumber(「A1」)調用它在細胞

Public Function FormatLargeNumber(val As String) 
'This function parses extremely large numbers per your example. 
' Modify as needed. 
FormatLargeNumber = Left(val, 4) & "-" _ 
        & Mid(val, 5, 6) & "-" & _ 
        Mid(val, 11, 5) & "-" & _ 
        Right(val, 4) 



End Function 
+0

但是,正如我在原始問題中所述,值是以TEXT存儲的,而不是數字值,所以感謝您解釋/解決方法。 – toolshed

+0

TEXT()公式將該單元格中的值解釋爲數字,即錯誤的來源。 我提供的函數只要將它作爲文本/字符串存儲,就會轉換(不僅僅是「掩碼」)值。 您確定這些值不是格式化爲文本的數字,而是真正的文本字符串? –

+0

它們是真正的文本字符串。我沒有使用數字類型的主要原因是因爲我需要保留前導零。 Excel提供了一個「建議錯誤」,即TEXT字段可能包含一個數字。我認爲它在使用TEXT方法時將其轉換爲數字。顯然,這不是理想的結果。我意識到我可以使用你提供的功能,我已經完成了(除了我使用內置函數的例外),但我不想。我的問題旨在確定使用TEXT函數是否有更簡單的方法來執行此操作。 – toolshed