Страницы: 1
RSS
Уникальный номер при добавление новой строки
 
Здравствуйте!
Столкнулся с такой сложностью.
Есть формула:
=ТЕКСТ(ПРАВСИМВ(СУММПРОИЗВ(КОДСИМВ(ПСТР(B6;СТРОКА(ДВССЫЛ("a1:a"&ДЛСТР(B6)));1))^3);5);"00000")

Но при добавление новой новой уникальной записи идет повторение номера, подскажите что где можно поправить формулу чтобы добавлялся уникальный номер для уникальной записи


Обязательно!
Автозаполнение номера при добавление новой строки
Новая строка, уникальный номер.
Главное 5 цифр не важно в каком порядке главное уникальные.
 
В Вашем варианте формула тяжелая, средства не оправдывают цели.
Формировать уникальный номер по номеру записи - плохой вариант?

Цитата
Автозаполнение номера при добавление новой строки
Только макрос.
И если уж применять VBA, то и номер можно формировать, не прибегая к формулам листа.
 
может есть другой способ решение этой задачи?
 
Вручную :)
 
нет, это не возможно, так как номер должен быть уникальный, а при больших списках товаров, могут быть зодвоение.
 
00001
00002
00003

При записи в ячейке столбца В макрос находит наибольшее значение  в столбце А и добавляет к нему 1. Чем такой вариант плох?
Код в модуле листа
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lRws As Long
    With Target
        If .Cells.Count > 1 Then Exit Sub ' выходим, если выделено больше одной ячейки
        If .Row < 5 Then Exit Sub ' выходим, если изменялась ячейка выше строки 5
        If Not Application.Intersect(Range("B:B"), Target) Is Nothing Then
            If Cells(.Row, 1).Value > 0 Then Exit Sub ' выходим, если номер уже есть
            lRws = UsedRange.Rows.Count ' последняя строка данных
            lRws = Application.WorksheetFunction.Max(Range("A5:A" & lRws)) '  наибольшее значение
            
            Application.EnableEvents = False ' отключаем события
            Range("A" & .Row).Value = lRws + 1 ' новый номер в ячейку изменяемой строки
            Application.EnableEvents = True ' включаем события
        End If
    End With
End Sub
 
Очень хороший вариант!
Только требует небольшую доработку макроса

1. Если заполняешь первую строку, то значение выводит: 1, а надо 00001
2. Если вести во вторую строку тоже название, то значение выводит: 2, а надо или 0 или пустое место, так как навевание не уникальное

 
м.б. так устроит?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 


1. Отличный вариант, только нужно чтобы начало было с этой цифры 00001, а на примере с 00005 (вероятно идет привязки к номеру строки)
2. Формула в этой ячейке отличается от остальных формул в этой ячейки (это не ошибка так и должно быть?)
 
1. Да, Вы правы, идет привязка к номеру строки, т.к. он всегда уникальный.
Измените формулу в А5 на
=(СТРОКА()-СТРОКА($A$4))*(СЧЁТЕСЛИ($B$5:B5;B5)=1)
или на
=(СТРОКА()-4)*(СЧЁТЕСЛИ($B$5:B5;B5)=1)
Хотя Вы сами писали в начале темы ▼
Цитата
madagaskar83 написал: Главное 5 цифр не важно в каком порядке главное уникальные.
Поэтому не все числа будут задействованы.
2. Отличий не заметил
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Огромное спасибо вы мне очень помогли, это то что мне надо!
Просто если они бы шли в без сортировке, то это все равно
В нашем случае идет сортировка, и хотелось бы чтобы все было по возрастанию.
И еще если вставляешь новую строку то некоторые цифры вы подают
00005
00007

 
 
Уважаемые! Человек тут новый, прошу не пинать :) несмотря на то что давно читаю и постоянно находил все что мне нужно до этого дня. Если нужно открыть новую тему, прошу сказать.
По сути у меня все то же что и нужно автору темы, но есть нюанс :)
Однозначно понимаю что нужен макрос. Ну наверное приступлю к сути.
Нужна нумерация новых строк (уникальнейшая). Несколько людей по утро делают копии одного файла и начинают в них работу. У каждого в экселе имеется свое ФИО (пользователь). нужна нумерации строки с добавлением в этот номер инициал пользователя. то есть
Пупкин Иван Петрович
его нумерация пойдет ПИП-00000006
след строка что он сделает соответственно ПИП-00000007
не маловажно что бы при добавлении новой строки где то меж уже имеющихся заполненных, также автоматом проставлялся след.номер ПИП-00000008.
В кратце
1. каждый пользователь в одном и том же файле имеет свой уникальный номер исходя из его ФИО
    ПИП-00000001
    ПИП-00000002
У другого
    АМЖ-00000001
Было бы здорово если в отдельный файл велся реестр номеров.
2. При вставке строки сразу присваивался номер
Изменено: zhlobus - 19.01.2024 13:08:45
 
zhlobus, нужен пример файла для начала.
Кроме того:

1. Предложенный способ идентификации не обеспечит уникальность идентификаторов. ПИП-000001 может создать не только Пупкин Иван Петрович, но и Пыпкин Илья Пантелеевич, Попкин Игорь Прокопьевич и т.д. Есть более надежные способы генерировать уникальные ID

2. Что считать новой строкой? Например, я полностью удалил содержимое всех столбцов в строке и заполнил заново. Это новая строка или старая? И т.д. В подобных случаях полезно защитить лист от изменений и разрешить добавлять и редактировать строки через кнопки "добавить\редактировать"

И без примера вряд ли кто-то поможет.
 
dhead,

Я Вас услышал и постараюсь сделать пример. т.к. та информация что имеется конфиденциальна.

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

2. Если стерли строку и заново заполнили, это новая строка. Если удалили строку и вставили новую, это тоже новая строка.
Изменено: zhlobus - 19.01.2024 17:28:18
Страницы: 1
Читают тему
Наверх