在Excel中根据字符串生成ID

时间:2019-03-24 05:39:26

标签: python excel csv

因此,我的数据由人员的名字组成,我想根据他们的名字为每个人分配一个唯一的数字ID。但是,我要给相同的名字人提供相同的唯一数字ID。例如,如果说,有两个人的名字相同,例如约翰,他们将具有相同的唯一数字ID值。请注意,我想动态分配此ID,因为人员数据将不断添加,因此每次添加新人员数据时,我都需要检查是否已经有该人员的ID,或者是否必须生成一个新的ID。我想用一些公式或宏来做到这一点。

如果有人知道如何执行此python,如为同一字符串生成相同的唯一数字ID。我也尝试使用python的UUID模块找到答案,但是没有找到任何合适的解决方案。

ID  Name
1   John
2   Michelle
1   John
3   Hasan
2   Michelle

如您所见,我的John值具有与'Michelle'相同的数字ID,即'1'

2 个答案:

答案 0 :(得分:0)

此UDF有点不稳定,但是可以使用,取决于您拥有多少个名称以及名称的分布...

Public Function GenerateId(ByVal strText As String) As Long
    Dim i As Long

    For i = 1 To Len(strText)
        strChar = UCase(Mid(strText, i, 1))
        GenerateId = GenerateId + Asc(strChar)
    Next
End Function

...它有可能翻倍,但不容易预测。您必须通通所有名称并检查所有结果。

此外,我知道这不是从1开始的顺序ID方式,但是您没有指定,因此我使用了一些创意许可。 :-)

此外,如果数据的排序方式不同,这将确保名称保留其ID,不确定是否是必要条件,但这是一个考虑因素。

反正值得一试。

答案 1 :(得分:0)

尽管宏/ UDF会很方便,但这是一个非常简单的公式:

enter image description here

我在A2中使用的公式翻译为:

=IF(COUNTIF($B$2:B2,B2)>1,INDEX($A$2:A2,MATCH(B2,$B$2:B2,0)),MAX($A$1:A1)+1)