Требуется помощь в написании макроса. Я сам не писатель, могу только изменять ранее заданные условия. Суть дилеммы следующая: В колонке А (условно А:А) необходимо поставить номер при условии, что в колонке С (условно С:С) этой же строки появилось какое-либо наименование. Вновь появившиеся наименования колонки С могут располагаться на разных строках (пример заполнения строк: 1, 5, 2, 15, 55, 3 и т.д.), нумерация при этом должна появиться в порядке их появления и более не меняться. Если в колонке С по заданной строке ничего нет, нумерация в колонке А не проставляется. Если в колонке С по заданной строке изменилось наименование, в колонке А номер не меняется. Если строка с ранее проставленным номером была удалена, последующая нумерация не сбивается и заполняются х+1 от самого крайнего номера. Нумерация макросом заполняется автоматически при появлении заданных значений.
У меня есть формула, которая прописывает нумерацию по дате и времени появления позиции. Проблема в том, что инженера сбивают наименования ранее заданных позиций и вся нумерация слетает.
Перелопатил интернет и не нашел аналогов За ранее спасибо.
Пока остановился на: [vba]
Код
Public Sub nomer() Dim Rng As Range Set Rng = Worksheets("СВОД по ГИП").Range("A8:A500") Worksheet_Change Rng End Sub
[/vba]
Здравствуйте!
Требуется помощь в написании макроса. Я сам не писатель, могу только изменять ранее заданные условия. Суть дилеммы следующая: В колонке А (условно А:А) необходимо поставить номер при условии, что в колонке С (условно С:С) этой же строки появилось какое-либо наименование. Вновь появившиеся наименования колонки С могут располагаться на разных строках (пример заполнения строк: 1, 5, 2, 15, 55, 3 и т.д.), нумерация при этом должна появиться в порядке их появления и более не меняться. Если в колонке С по заданной строке ничего нет, нумерация в колонке А не проставляется. Если в колонке С по заданной строке изменилось наименование, в колонке А номер не меняется. Если строка с ранее проставленным номером была удалена, последующая нумерация не сбивается и заполняются х+1 от самого крайнего номера. Нумерация макросом заполняется автоматически при появлении заданных значений.
У меня есть формула, которая прописывает нумерацию по дате и времени появления позиции. Проблема в том, что инженера сбивают наименования ранее заданных позиций и вся нумерация слетает.
Перелопатил интернет и не нашел аналогов За ранее спасибо.
Пока остановился на: [vba]
Код
Public Sub nomer() Dim Rng As Range Set Rng = Worksheets("СВОД по ГИП").Range("A8:A500") Worksheet_Change Rng End Sub
Но, т.к. дата меняется в зависимости от внесения изменений в наименование, то и нумерация слетает вся, а это не должно быть так, т.к. данные номера уходят в работу и за ними следует множества процедур. Если номер изменится, то держателя данного файла около 10 отделов пустят на моральное публичное избиение с использованием различных способов (методов) извращения :D. Не хотелось бы под это попасть, в связи с этим решено было использование макроса.
Но, т.к. дата меняется в зависимости от внесения изменений в наименование, то и нумерация слетает вся, а это не должно быть так, т.к. данные номера уходят в работу и за ними следует множества процедур. Если номер изменится, то держателя данного файла около 10 отделов пустят на моральное публичное избиение с использованием различных способов (методов) извращения :D. Не хотелось бы под это попасть, в связи с этим решено было использование макроса.Shot
в VBA нуп!
Сообщение отредактировал Shot - Среда, 19.02.2020, 15:57
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("c7:c18000")) Is Nothing Then If Range("a" & Target.Row) = "" And Target <> "" Then u = Application.Max(Range("a7:a18000")) + 1 Range("a" & Target.Row) = u End If End If End Sub
[/vba]при условии, что вноситься по одной записи
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("c7:c18000")) Is Nothing Then If Range("a" & Target.Row) = "" And Target <> "" Then u = Application.Max(Range("a7:a18000")) + 1 Range("a" & Target.Row) = u End If End If End Sub
[/vba]при условии, что вноситься по одной записиNic70y