2016-11-14 13 views
0

我有一個包含productIDs這是類似的數字修復MS Excel單元格的文本permenantly

ProductIDS 
46257547467 
65464564656 
47682542896 
68683582757 

我也把它轉換使用=TEXT(cellNO,"0")文本柱上,並使其在該時間正常工作。但幾個小時後,下一次當我打開文件時,它讀取像這樣的列數:

ProductIDS 
4.62E+10 
6.54E+10 
4.76E+10 
6.86E+10 

我怎樣才能永久地轉換爲文本,這樣,當我每次打開它,它表明我的列文?謝謝。

+0

究竟是什麼問題? '= TEXT(cellNO,「0」)公式消失了嗎?或者是那裏的公式,但它仍然以科學形式顯示數字?什麼版本的Excel?這裏需要更多信息。 – SiHa

+0

應用公式後,我將所有單元格粘貼爲值。所以現在公式不再在這裏,但值被轉換成文本。但下一次我打開文件時,它再次以科學格式顯示這些值。 – muazfaiz

+0

爲什麼不將「文本」格式應用於單元格? – SiHa

回答

0

聽起來好像你正試圖在Excel工作表中生成唯一的ID(用於另一個應用程序,也許......?)。如果添加新行(特別是與現有行混合在一起),或者b)公式基於工作表的上下文,則在此使用公式不會有太大的好處。

我已經寫了一個小的sub,爲給定的列生成一個唯一的ID,當有關該行的內容被填充時自動填充它。它也適用於一系列插入的行,而不僅僅是當前行。

Private Sub Worksheet_Change(ByVal targetRange As Range) 
    ' Confirm that the change is occuring where I want to track it 
    If targetRange.Column = Range("WhereChangeOccurs").Column Then 
     ' Capture the target column holding the IDs 
     Dim IDRangeColumn As Integer 
     IDRangeColumn = Range("IDRange").Column 

     ' Loop through each row of the target range, inserting an ID literal 
     For Each thisrow In targetRange.Rows 
      ' update the ID with 
      ' DateTime (to milliseconds) plus 
      ' unique GUID based on system 
      Cells(thisrow.Row, IDRangeColumn).Value = Format(Now, "yyyy-mm-dd: hh.mm.ssss-") & Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 18) 
     Next 
    End If 
End Sub 

這是相當快,而唯一可容納即使插入多行(到目前爲止,檢查約50-100行一次)。這有的好處,總是爲生成一行的唯一ID,而不需要複製粘貼值;無需人爲干預。

請注意,ID生成中的「,18)」可以是更長的數字,如果您希望將其用於唯一性;我想在開始時想要一些可讀的(日期/時間),只是爲了人類的可理解性。