Страницы: 1
RSS
Автонуммерация с учётом подгруппы, Порядковое присвоение номера с учётом нахождения в подгруппе
 
Всем добрый день и хорошего настроения!

Прошу внимания, возможно кто-то сталкивался с решением такого вопроса как нумерация строк  в зависимости от группировок и автоматизирование такого процесса для всего столбца и новых появляющихся строк.

Более подробно с примером и промежуточным решением всё изложено в файле прикрепленному к теме.
Спасибо всем кто уделит внимание и подскажет где искать решение!
 
sergey_sasin, здравствуйте. У вас нумерация идёт по уровню группировки. При добавлении новых данных, как макросу понимать, что и как нумеровать? Или вы группировать сами будете, а потом запускать макрос? С заливкой то же самое… Я в таких случаях поступаю от обратного: делаю классическую плоскую "умную" таблицу с полями № КАТ, категория, № ГР, группа, № РАБ, работа (в полях с № числа в общем формате). Затем сцепляю в нужном порядке и анализирую в сводной. Потом строю отчёт в любом виде (в том числе и таком).
Макросы для нумерации по моему методу прикрепляю. Текстовый поля (категория, группа, работа и т.д.) должны быть отсортированы (категория->группа->работа)

3 макроса
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Код
Sub NumbersRows()
Dim lstr&, i&, y&, x&, z&, a&, b&
lstr = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = True
Columns(6).NumberFormat = "@"
For i = 2 To lstr
    If Cells(i, 1).EntireRow.OutlineLevel = 1 Then x = x + 1
    If x > a Then y = 0
    If Cells(i, 1).EntireRow.OutlineLevel = 2 Then y = y + 1
    If y > b Then z = 0
    If Cells(i, 1).EntireRow.OutlineLevel = 3 Then z = z + 1
    Cells(i, 6) = Replace(CStr(x & "." & y & "." & z), ".0", "")
    a = x: b = y
Next
Application.ScreenUpdating = True
End Sub
Изменено: Владимир - 18.10.2017 17:22:36
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, прям один в одни то, что нужно, но только при появлении новой позиции с самой старшей группой, макрос присваивает лишнюю цифру, пример прикрепил:
 
Цитата
sergey_sasin написал: один в одни то, что нужно, но...
Если один в один, то как может быть "но..."?
"Все хорошо, прекрасная маркиза, и хороши у нас дела"? :)
 
Дополните эту строку:If x > a Then y = 0: z = 0
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, спасибо вам, всё получилось. Прикрепил полное решение.
Изменено: sergey_sasin - 19.10.2017 09:46:10
Страницы: 1
Наверх