избавляется от дополнительных ограничений атрибута id , см. здесь . Единственные требования, оставленные (кроме единственного в документе):
Идентификатор должен соответствовать:
[A-Za-z][-A-Za-z0-9_:.]*
-
(дефис), _
(подчеркивание), :
(двоеточие) и .
(период) , но следует избегать :
и .
beacause:
Например, идентификатор может быть помечен как «ab: c» и указан в таблице стилей как #ab: c, но также как и это id для элемента, это может означать id «a», класс «b», псевдоселектор «c». Лучше избегать путаницы и избегать использования. и: вообще.
Несмотря на то, что макросы / пользовательские функции были бы удобны, вот довольно простая формула:
Формула, которую я использовал в [ 111] переводится как:
=IF(COUNTIF($B$2:B2,B2)>1,INDEX($A$2:A2,MATCH(B2,$B$2:B2,0)),MAX($A$1:A1)+1)
Этот 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, но вы не указали это, поэтому я использовал креативную лицензию. : -)
Кроме того, это гарантирует, что имя сохранит свой идентификатор, если данные отсортированы по-разному, не уверен, является ли это требованием или нет, но это соображение.
Стоит потенциальный выстрел в любом случае.