Страницы: 1
RSS
Создать нумерацию-ветвление (категории,подкатегории...)
 
Привет, форумчане
не могу автоматизировать заполнение ячейки в формате 1.0.1, где через точку указана глубина описания (столбцы), само число-порядковый номер на выбранной глубине (строка). Ячейка (на пересечении строки и столбца) отражает положение данных в структуре.

Например:
Имеем в начале один столбец и одну строку:
1 (или 1.0.0) значит товары
Имеем в конце структурирования несколько столбцов и строк:
1.2.1 значит: товар->мясо->говядина
1.2.2 значит: товар->мясо->свинина
1.3.1 значит: товар->фрукты->яблоки

Мы не знаем вначале ничего ни о говядине, ни о яблоках (они появляются в процессе).
хочу, что бы при заполнении ячейки товаром (груши), рассматриваемая ячейка:
считывала значения в столбце слева (предыдущий уровень, мясо или фрукты)
если оно >0, то брала это заполнение и переходила искать дальше-левее (товар/не товар)
если ячейка пустая (груши добавляются вниз в текущей группе), искала ближайшее значение вверх по столбцу. Дальше по такой же схеме следует перейти еще левее (товар/не товар)

Это можно автоматизировать?
 
Цитата
Это можно автоматизировать?
Да. Макрос. Я бы для новой строки номер всегда устанавливал +1 пункт к предыдущему значению (с учетом вложенности)  + две горячие клавиши сместить уровень выше / ниже (аналог Word-ких уменьшить/увеличить отступ")
Изменено: Grr - 05.10.2016 06:00:56
 
sergio2510, доброго дня!))) посмотрите вот эти взаимообратные макросы - может сможете применить у себя  ;)
Код
'Название: Проставление номеров уровней по отступам
'Инструкция: 1. Вставить столбец СПРАВА от источника 2. Выделить значения в столбце-источнике и запустить макрос
'Автор: Казанский
'Тема на форуме: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=31316&MID=272637#message272637
'======================================================================================================================

Sub Indent_Number()

Application.ScreenUpdating = False

Dim c As Range

On Error Resume Next

For Each c In Selection
c(, 2) = c.IndentLevel
Next
     
Application.ScreenUpdating = True
 
End Sub

'Название: Проставление отступов по номерам уровней
'Инструкция: 1. Вставить столбец с номерами уровней СЛЕВА от источника 2. Выделить значения в столбце с номерами уровней и запустить макрос
'Автор: Казанский
'Тема на форуме: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=8&TID=27920&MID=244759#message244759
'===========================================================================================================================================
Sub Indent_FromNumber()

Application.ScreenUpdating = False

Dim c As Range

On Error Resume Next

For Each c In Selection
    c(, 2).IndentLevel = c
Next

Application.ScreenUpdating = True

End Sub

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Читают тему
Наверх