Уникальный идентификатор ячейки |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
excel_pl Пользователь Сообщений: 206 |
Как сделать, чтобы в ячейке формировался уникальный идентификатор для каждой строки (записи)? Как сделать, чтобы уникальный идентификатор для каждой строки (записи) не изменялся при удалении или добавлении записей? |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#2 09.03.2017 20:59:50 Доброе время суток
Взято здесь и есть варианты. . |
||
Nik021 Пользователь Сообщений: 63 |
Здравствуйте. Самое простое это прописать id при помощи любой формулы, но в этом случае оно изменится при изменении самой записи, бороться с этим можно при помощи макроса, который бы записывал id, как текст. Ну либо сделать простую формулу, результат которой не зависит от записи (2 вариант) |
AAF Пользователь Сообщений: 1000 |
#4 09.03.2017 21:19:28 Иногда так удобно…
|
||
БМВ Модератор Сообщений: 21380 Excel 2013, 2016 |
AAF, тут есть подвох получить не уникальные значения если обработку делать пакетом. При разовом или с таймаутом применении — ОК. По вопросам из тем форума, личку не читаю. |
AAF Пользователь Сообщений: 1000 |
БМВ, Нет, там подкидывается по единице, если не сменилось… |
БМВ Модератор Сообщений: 21380 Excel 2013, 2016 |
AAF, старосnь+ 14″+HD = не посмотрел внимательно :-). Sorry По вопросам из тем форума, личку не читаю. |
pharmaprofi Пользователь Сообщений: 234 pharmaprofi |
А я такие люблю: GUID Гарантируется уникальность Id. Правда в excel такой Id не в один клик генерируется… p/s увидел, что Андрей VG про него и пишет Изменено: pharmaprofi — 09.03.2017 22:20:33 |
excel_pl Пользователь Сообщений: 206 |
#9 09.03.2017 22:29:15
Использовал ваш вариант… Так и должно быть или можно, что-то сделать? |
||
AAF Пользователь Сообщений: 1000 |
Если Вы используете как функцию на листе, будет обновляться, а если прописывать .Value в ячейку, то все уже, это навечно. Изменено: AAF — 09.03.2017 22:34:38 |
excel_pl Пользователь Сообщений: 206 |
#11 09.03.2017 22:39:34
Я слабо разбираюсь в VBA. |
||
AAF Пользователь Сообщений: 1000 |
#12 09.03.2017 22:57:18 excel_pl, вот это вставить в модуль листа:
А функцию в простой модуль:
Прикрепленные файлы
Изменено: AAF — 09.03.2017 23:04:27 |
||||
excel_pl Пользователь Сообщений: 206 |
#13 09.03.2017 23:01:48
не пашет.. |
||
AAF Пользователь Сообщений: 1000 |
excel_pl, Я файлик добавил в сообщение и исправил его, а то не тот сначала кинул… |
excel_pl Пользователь Сообщений: 206 |
#15 09.03.2017 23:09:29 [URL=AAF написал:Я файлик добавил в сообщение и исправил его, а то не тот сначала кинул…Что-то не работает… или я не туда жмусм. скрин http://prntscr.com/ehzw6o ]
Что-то не работает… или я не туда жму Изменено: excel_pl — 14.03.2017 02:49:36 |
||
AAF Пользователь Сообщений: 1000 |
файлик называется так: уник идент id_00 (1).XLSM |
excel_pl Пользователь Сообщений: 206 |
Кажись заработал… |
AAF Пользователь Сообщений: 1000 |
#18 10.03.2017 08:57:56 В коде есть такие строчки:
иначе говоря:
|
||||
erlankoke Пользователь Сообщений: 3 |
Можно генерировать с помощью genpas.narod.ru и удалить дубликаты. или попробовать формулой с привязкой к строек в связке с генерированным числом и числом из ячейки ƒ=GetNumbers([@zp])+СТРОКА()*СЛУЧМЕЖДУ(5000;9000) |
excel_pl Пользователь Сообщений: 206 |
Не могли бы вы проверить правильно ли я делаю? http://prntscr.com/ei50a9 |
excel_pl Пользователь Сообщений: 206 |
#21 10.03.2017 09:22:07
Не могли бы вы показать на примере моего файла? |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#22 10.03.2017 10:38:34 Доброе время суток.
И что случиться при сортировке или удалении? |
||
AAF Пользователь Сообщений: 1000 |
#23 10.03.2017 15:06:21 excel_pl, да, имелось ввиду, что id предполагает первый столбец региона (таблицы)
Замените предыдущий код на этот… Изменено: AAF — 10.03.2017 15:23:54 |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#24 03.10.2018 10:27:26 Дополню немного изменённым вариантом из комментариев по ссылке Андрея из #2:
дело в том, что, после одного из обновлений, на строке CreateObject(«Scriptlet.TypeLib») возникает ошибка (подробности тут ). Чтобы не писать функцию с декларированием библиотек (типа Declare Function CoCreateGuid Lib «ole32» (ByRef GUID As Byte) As Long) и был выбран код выше, как полноценная замена. Знаю, что тема старая, но мне была полезна, да и нечастый вопрос, собственно Изменено: Jack Famous — 03.10.2018 10:44:00 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#25 05.10.2018 12:25:06 Снова вернулся к теме, т.к. вариант из предыдущего поста, как оказывается, генерит большое количество дублей уже на тысячах ключей, если диапазон заполняется не одновременно, а в разное время. Вариант от AAF такое исключает (если не править настройки даты/времени на ПК), т.к. привязан к постоянному счётчику. К тому же, возможность узнать дату и время получения ключа также может пригодиться Добавил префикс для избавления от «длинных» чисел…
Изменено: Jack Famous — 05.10.2018 12:27:02 Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Приветствую
Надо как-то в Excel или в LibreOffice настроить автоматическую генерацию уникального числа у каждой строки с заполненными данными.
Есть два столбца — ID (столбец №1) и имя человека (столбец №2). Если добавляю новое имя в столбец №2, то в этой строке в столбце №1 должен появиться уникальный идентификатор, к примеру, цифровой код (цифра). Но есть одна особенность. Допустим, что есть пять записей в файле с айдишниками с 1 по 5. Я удаляю пятую запись, строку целиком или очищаю ее, а затем добавляю новую запись. А вот у же у новой записи по факту шестой, но с учетом ранее удаленной записи, новая запись будет пятой, но ее ID уже не должен быть пятым, но должен быть шестым.
На картинке пояснил тремя блоками:
- добавил записи, добавились автоматом ID
- удалил пятую запись
- добавил новую запись; по факту ее ID должен быть новым, ранее не использовавшимся.
Подскажите пожалуйста реализацию.
-
Вопрос заданболее трёх лет назад
-
5452 просмотра
Пригласить эксперта
Используйте ms access или любую БД. Они для этого и предназначены.
в Excel можно реализовать через макросы, но это такой костыль, что всем костылям костыль:
Добавьте код макроса в код страницы (редактор кода vba->двойной щелчок по нужному листу в менеджере проекта), диапазон ваших значений B1:B1000
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B1:B1000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
X = 5
Y = 1
If Cells(Y, X).Value = "" Then Cells(Y, X).Value = 0
On Error GoTo here
If Target.Value <> "" Then
answer = MsgBox("Increment?", vbYesNo + vbQuestion, "Empty Sheet")
If answer = vbYes Then Target.Offset(0, -1).Value = Cells(Y, X).Value + 1
If answer = vbYes Then Cells(Y, X).Value = Cells(Y, X).Value + 1
Else
Target.Offset(0, -1).Value = ""
End If
here:
Debug.Print Err
End If
End Sub
Можно использовать ID на основе текущего времени, например 170911181042, 170911181057 и т.п. Со вставкой такого числа справится простенький макрос типа:
Sub typeID()
mydate = Date
mytime = Time
mydateF = Format(mydate, "yymmdd")
mytimeF = Format(mytime, "HhMmSs")
ID = mydateF & mytimeF
ActiveCell.Value = ID
End Sub
Варианты с GUID:
1. Макрос:
Public Function GetGUID() As String
GetGUID = Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36)
End Function
2. Формула:
=CONCATENATE(DEC2HEX(RANDBETWEEN(0;4294967295);8);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;42949);4);"-";DEC2HEX(RANDBETWEEN(0;4294967295);8);DEC2HEX(RANDBETWEEN(0;42949);4))
-
Показать ещё
Загружается…
15 апр. 2023, в 13:55
55000 руб./за проект
15 апр. 2023, в 13:45
1000 руб./за проект
15 апр. 2023, в 13:28
500 руб./за проект
Минуточку внимания
Предположим, что в столбце есть повторяющиеся данные, теперь вы хотите добавить уникальный идентификационный номер для этих повторяющихся строк, как показано на скриншоте ниже. Есть ли у вас какие-нибудь хорошие способы их добавления? Здесь я представляю формулу, которая поможет вам быстро справиться с этой задачей в Excel.
Добавление столбца уникального идентификатора для повторяющихся строк с помощью формулы
Добавление отсутствующего идентификационного номера с помощью Kutools for Excel
Добавление столбца уникального идентификатора для повторяющихся строк с помощью формулы
Чтобы добавить уникальный идентификационный номер для повторяющихся данных, выполните следующие действия:
1. введите 1 в ячейку рядом с первыми данными, в которые вы хотите добавить идентификационный номер.
2. Затем в ячейке под ним введите эту формулу =IF(B1=B2,A1,A1+1), нажмите Enter Чтобы получить первый результат, перетащите дескриптор заполнения вниз, пока не появятся последние данные.
В формуле B1, B2 — первые две ячейки в столбце повторяющихся данных, A1 — первая ячейка идентификатора.
Добавление отсутствующего идентификационного номера с помощью Kutools for Excel
Если у вас есть список идентификационных номеров, который включает некоторые недостающие номера, как показано на скриншоте ниже, вы можете подать заявку. Kutools for ExcelАвтора Find Missing Sequence Number утилита для быстрого поиска и добавления недостающего числа.
После установки Kutools for Excel, пожалуйста, сделайте следующее:(Бесплатная загрузка Kutools for Excel Сейчас!)
1. Выберите идентификационные номера, в которые вы хотите вставить отсутствующие номера, нажмите Кутулс > Insert > Find Missing Sequence Number.
2. Во всплывающем диалоговом окне вы можете выбрать один вариант, чтобы добавить или выделить отсутствующие числа по мере необходимости.
3. Нажмите Ok. Появится диалоговое окно с напоминанием о количестве недостающих данных, закройте его. Затем все отсутствующие числа были добавлены или выделены в столбце или рядом с ним.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (1)
Оценок пока нет. Оцените первым!
Содержание
- Присвоение наименования
- Способ 1: строка имен
- Способ 2: контекстное меню
- Способ 3: присвоение названия с помощью кнопки на ленте
- Способ 4: Диспетчер имен
- Вопросы и ответы
Для выполнения некоторых операций в Экселе требуется отдельно идентифицировать определенные ячейки или диапазоны. Это можно сделать путем присвоения названия. Таким образом, при его указании программа будет понимать, что речь идет о конкретной области на листе. Давайте выясним, какими способами можно выполнить данную процедуру в Excel.
Присвоение наименования
Присвоить наименование массиву или отдельной ячейке можно несколькими способами, как с помощью инструментов на ленте, так и используя контекстное меню. Оно должно соответствовать целому ряду требований:
- начинаться с буквы, с подчеркивания или со слеша, а не с цифры или другого символа;
- не содержать пробелов (вместо них можно использовать нижнее подчеркивание);
- не являться одновременно адресом ячейки или диапазона (то есть, названия типа «A1:B2» исключаются);
- иметь длину до 255 символов включительно;
- являться уникальным в данном документе (одни и те же буквы, написанные в верхнем и нижнем регистре, считаются идентичными).
Способ 1: строка имен
Проще и быстрее всего дать наименование ячейке или области, введя его в строку имен. Это поле расположено слева от строки формул.
- Выделяем ячейку или диапазон, над которым следует провести процедуру.
- В строку имен вписываем желаемое наименование области, учитывая правила написания названий. Жмем на кнопку Enter.
После этого название диапазону или ячейке будет присвоено. При их выделении оно отобразится в строке имен. Нужно отметить, что и при присвоении названий любым другим из тех способов, которые будут описаны ниже, наименование выделенного диапазона также будет отображаться в этой строке.
Способ 2: контекстное меню
Довольно распространенным способом присвоить наименование ячейкам является использование контекстного меню.
- Выделяем область, над которой желаем произвести операцию. Кликаем по ней правой кнопкой мыши. В появившемся контекстном меню выбираем пункт «Присвоить имя…».
- Открывается небольшое окошко. В поле «Имя» нужно вбить с клавиатуры желаемое наименование.
В поле «Область» указывается та область, в которой при ссылке на присвоенное название будет идентифицироваться именно выделенный диапазон ячеек. В её качестве может выступать, как книга в целом, так и её отдельные листы. В большинстве случаев рекомендуется оставить эту настройку по умолчанию. Таким образом, в качестве области ссылок будет выступать вся книга.
В поле «Примечание» можно указать любую заметку, характеризующую выделенный диапазон, но это не обязательный параметр.
В поле «Диапазон» указываются координаты области, которой мы даем имя. Автоматически сюда заносится адрес того диапазона, который был первоначально выделен.
После того, как все настройки указаны, жмем на кнопку «OK».
Название выбранному массиву присвоено.
Способ 3: присвоение названия с помощью кнопки на ленте
Также название диапазону можно присвоить с помощью специальной кнопки на ленте.
- Выделяем ячейку или диапазон, которым нужно дать наименование. Переходим во вкладку «Формулы». Кликаем по кнопке «Присвоить имя». Она расположена на ленте в блоке инструментов «Определенные имена».
- После этого открывается уже знакомое нам окошко присвоения названия. Все дальнейшие действия в точности повторяют те, которые применялись при выполнении данной операции первым способом.
Способ 4: Диспетчер имен
Название для ячейки можно создать и через Диспетчер имен.
- Находясь во вкладке «Формулы», кликаем по кнопке «Диспетчер имен», которая расположена на ленте в группе инструментов «Определенные имена».
- Открывается окно «Диспетчера имен…». Для добавления нового наименования области жмем на кнопку «Создать…».
- Открывается уже хорошо нам знакомое окно добавления имени. Наименование добавляем так же, как и в ранее описанных вариантах. Чтобы указать координаты объекта, ставим курсор в поле «Диапазон», а затем прямо на листе выделяем область, которую нужно назвать. После этого жмем на кнопку «OK».
На этом процедура закончена.
Но это не единственная возможность Диспетчера имен. Этот инструмент может не только создавать наименования, но и управлять или удалять их.
Для редактирования после открытия окна Диспетчера имен, выделяем нужную запись (если именованных областей в документе несколько) и жмем на кнопку «Изменить…».
После этого открывается все то же окно добавления названия, в котором можно изменить наименование области или адрес диапазона.
Для удаления записи выделяем элемент и жмем на кнопку «Удалить».
После этого открывается небольшое окошко, которое просит подтвердить удаление. Жмем на кнопку «OK».
Кроме того, в Диспетчере имен есть фильтр. Он предназначен для отбора записей и сортировки. Особенно этого удобно, когда именованных областей очень много.
Как видим, Эксель предлагает сразу несколько вариантов присвоения имени. Кроме выполнения процедуры через специальную строку, все из них предусматривают работу с окном создания названия. Кроме того, с помощью Диспетчера имен наименования можно редактировать и удалять.
Еще статьи по данной теме: