Генерация идентификатора на основе строки в Excel - PullRequest
0 голосов
/ 24 марта 2019

Итак, у меня есть данные, состоящие из имен людей, и я хочу назначить каждому из них уникальный числовой идентификатор на основе их имен. Но дело в том, что я хочу присвоить один и тот же уникальный числовой идентификатор тому же имени. Например, если, скажем, есть два человека с одним именем, например Джон, у них будет одно и то же уникальное числовое значение идентификатора. Обратите внимание, что я хочу назначить этот идентификатор динамически, потому что данные о людях будут добавляться постоянно, поэтому каждый раз, когда добавляются новые данные о людях, мне нужно проверить, есть ли у меня идентификатор для этого человека, или мне нужно сгенерировать новый. Я хочу сделать это превосходно с некоторой формулой или макросами.

Также, если кто-нибудь знает, как сделать этот питон, например, создать один и тот же уникальный числовой идентификатор для той же строки. Я также пытаюсь найти ответ, используя UUID модуль python, но не нашел правильного решения.

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

Как видите, значение Джона имеет тот же числовой идентификатор, который равен «1», так же как и «Мишель»

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Хотя макросы / 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)  
0 голосов
/ 24 марта 2019

Этот 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, но вы не указали это, поэтому я использовал креативную лицензию. : -)

Кроме того, это гарантирует, что имя сохранит свой идентификатор, если данные отсортированы по-разному, не уверен, является ли это требованием или нет, но это соображение.

Стоит потенциальный выстрел в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...