聽起來好像你正試圖在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)」可以是更長的數字,如果您希望將其用於唯一性;我想在開始時想要一些可讀的(日期/時間),只是爲了人類的可理解性。
究竟是什麼問題? '= TEXT(cellNO,「0」)公式消失了嗎?或者是那裏的公式,但它仍然以科學形式顯示數字?什麼版本的Excel?這裏需要更多信息。 – SiHa
應用公式後,我將所有單元格粘貼爲值。所以現在公式不再在這裏,但值被轉換成文本。但下一次我打開文件時,它再次以科學格式顯示這些值。 – muazfaiz
爲什麼不將「文本」格式應用於單元格? – SiHa