每行的唯一标识符 - excel

时间:2018-01-31 17:08:54

标签: excel excel-vba excel-formula excel-2007 vba

我在excel中有一个文件。对于每一行,我必须创建一个唯一的标识符。它必须永久创建。问题是例如:我在计算机A和B上有相同的文件。我在每个文件中填充相同的行。但这些行的标识符应该不同。请帮我。如果你知道怎么做,请给我一个宏或公式的例子

2 个答案:

答案 0 :(得分:0)

试试这个。

=CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",DEC2HEX(RANDBETWEEN(0,65535),4),"-",DEC2HEX(RANDBETWEEN(16384,20479),4),"-",DEC2HEX(RANDBETWEEN(32768,49151),4),"-",DEC2HEX(RANDBETWEEN(0,65535),4),DEC2HEX(RANDBETWEEN(0,4294967295),8))

这是How can I generate GUIDs in Excel?的副本,半冒号用逗号代替。您正在寻找的是全局唯一标识符或GUID。如果您搜索excel和GUID,您可以获得更多选项。

如果您希望能够从中获取行和/或列的引用,以便您可以比较这两个文件,则可以追加

& "-" & ROW()&COLUMN() 

到上面的结尾。这将有效地为您提供所引用的行和列的地址。

答案 1 :(得分:0)

不是最优雅的做事方式,但我相信这有点回答你的问题。

如果您可以确保两个文件都启用了宏,则用户不需要知道如何为它们添加前缀,只需使用类似下面的内容将ID添加到您输入新数据时所需的任何列中以下示例中的B列:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column A
If Target.Address = "$B$" & LastRow Then
    For i = 2 To LastRow
        ws.Cells(i, 1).Value = "A" & Format(i, "000")
    Next i
End If
End Sub

在另一个文件中执行相同操作,只需更改" A"到" B"