Страницы: 1
RSS
Формула автоматического проставления номера товара
 
Всем доброе время суток!
Возможно как нибудь реализовать через формулу автоматического присвоения номера в конце товара?
Примерно так

Груша 001
Груша 002
Груша 003
Яблоко 001
Яблоко 002
Яблоко 003
Груша 004
Груша 005
Яблоко 004
Задача вписать в таблице просто название товара а номер будет дописываться сам по порядку
Изменено: brat155 - 04.02.2020 21:46:04
 
В отдельном столбце с помощью функций СЦЕПИТЬ, ТЕКСТ и СЧЁТЕСЛИ можно получить нужный Вам результат.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Задача сделать в этом же столбце
 
Ну, сделайте, как сказал Максим В., скопируйте результат как значение в тот же столбец, а потом доп. столбец просто удалите. По-другому - только с помощью VBA.
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
brat155 написал:
Задача сделать в этом же столбце
Цитата
Михаил Лебедев написал:
По-другому - только с помощью VBA.
Скрытый текст
 
Совсем недавно была такая же задача  
 
Данный вариант не подходит к сожалению, при вводе дополнительного товара  надо удалять старые значения так как макрос не пересчитывает
 
=СЦЕПИТЬ(A1;" ";ТЕКСТ(СЧЁТЕСЛИ(A$1:A1;A1);"000"))
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Цитата
brat155 написал:
при вводе дополнительного товара  надо удалять старые значения так как макрос не пересчитывает
Добавьте товар и попробуйте:
Скрытый текст
 
То что нужно))
Огромное спасибо за помощь!!!

Единственное не получается сменить колонку
вроде Set r = Range("A1").CurrentRegion меняю на Range("C1")
Но считает все равно в первой
Изменено: brat155 - 09.02.2020 04:36:42
 
Цитата
brat155 написал:
Но считает все равно в первой
Так во второй части кода была привязка к первому столбцу листа.
Скрытый текст
Изменено: aequit - 09.02.2020 11:22:19
 
Вариант (тоже на словарях)
Код
Sub dicnum()
    Dim r&, c%, i&, t$, dic As Dictionary
    r = 1
    c = 3
    Set dic = New Dictionary
    For i = r To r + Cells(r, c).CurrentRegion.Rows.Count - 1
        t = Split(Cells(i, c), "_")(0)
        dic(t) = dic(t) + 1
        Cells(i, c) = t & Format(dic(t), "_000")
    Next i
End Sub
Изменено: buchlotnik - 09.02.2020 13:41:58
Соблюдение правил форума не освобождает от модераторского произвола
 
Всем спасибо! :)
Все получилось!!!
 
На всякий случай оставлю - так оно на пару порядков быстрее работать будет:
Код
Sub dicnum2()
    Dim r&, c%, i&, t$, dic As Dictionary
    r = 1
    c = 3
    Set dic = New Dictionary
    arr = Cells(r, c).CurrentRegion
    For i = 1 To UBound(arr)
        t = Split(arr(i, 1), "_")(0)
        dic(t) = dic(t) + 1
        arr(i, 1) = t & Format(dic(t), "_000")
    Next i
    Cells(r, c).Resize(UBound(arr), 1) = arr
End Sub

:)
Соблюдение правил форума не освобождает от модераторского произвола
 
Спасибо) но данный код не работает когда в ячейке словосочетание) К примеру "Красные яблоки" код удаляет слово яблоки и подставляет номер ))
А последний вариант работает совершенно неправильно), если в первой ячейке находится текст то он его клонирует в ячейку С заменяя нужные значения
И у меня немного посложнее задача, если делать сплит по _ то проблем нет но у меня это публичный прайс лист и я не могу использовать подчеркивание _001,  у мня все в таком формате к сожалению "Красные яблоки 001"
Но название идет со второй строки (с этим проблем нет) и с 3го столбца, уже начинаются проблемы в коде если текст имеется в столбцах 1 и 2 ((
Прикрепил файл с таблицей
Изменено: brat155 - 11.02.2020 12:07:12
 
Цитата
brat155 написал:
код удаляет слово яблоки
неправда, это вы его переписали, мой такого не делает
Цитата
brat155 написал:
если в первой ячейке находится текст то он его клонирует
а кто сразу в примере показал, что работаем с умной таблицей?
Короче
Скрытый текст
Изменено: buchlotnik - 10.02.2020 10:15:40
Соблюдение правил форума не освобождает от модераторского произвола
 
Вы прям Шаман своего дела ))!!!
Бесконечно благодарен!!!
Страницы: 1
Наверх