Приветствую всех.Прошу помочь в решении. Столкнулись с тем , что что вводе новых данных лист " база" столбец Е(год) необходимо будет обновлять нумерацию . Строк при этом 2000 и более и моим возрастным людям это будет не очень удобно. Поискала решение на просторах интернета , не нашла ничего подходящего. Подскажите пожалуйста, можно ли технически сделать , чтобы при вводе и удалении строки продолжали свою нумерацию и был еще отходной путь в случай если операция была ошибочной ( те шаг назад)
Приветствую всех.Прошу помочь в решении. Столкнулись с тем , что что вводе новых данных лист " база" столбец Е(год) необходимо будет обновлять нумерацию . Строк при этом 2000 и более и моим возрастным людям это будет не очень удобно. Поискала решение на просторах интернета , не нашла ничего подходящего. Подскажите пожалуйста, можно ли технически сделать , чтобы при вводе и удалении строки продолжали свою нумерацию и был еще отходной путь в случай если операция была ошибочной ( те шаг назад)GGR
GGR, Не совсем понял, какую именно нумерацию нужно обновить, если в столбце Д, то попробуйте такой формулой, при удалении строки она не будет выдавать ошибку, хотя СМЕЩ может подтормаживать
Если в столбце В, то у Вас в самом начале стоит формула
Код
=СТРОКА()-2
GGR, Не совсем понял, какую именно нумерацию нужно обновить, если в столбце Д, то попробуйте такой формулой, при удалении строки она не будет выдавать ошибку, хотя СМЕЩ может подтормаживать
msi2102,_Boroda_ спасибо , что откликнулись.Прошу прощения , что ввела вас в заблуждение не дописав в каком столбце необходимо сделать нумерацию. Итак, при вводе новой строки с новыми данными ( столбец E-год), нумерация ( столбец В № п/п) должна автоматически поменяться. ( н-р в 7 строке ввели новую строчку, получается , что в В7 будет № 5, в В8 № 6) В столбце В у меня стоит формула , но если ввести дополнительную строку , то ячейка будет пустая, а нумерация продолжиться. Минус - отвратный шаг отсутствует. Я думала есть решение сделать макросом автозаполнение при вводе и удалении строк+ код навигации " шаг назад" .У меня в этой форме будут работать люди преклонного возраста, поэтому я старюсь максимально облегчить задачу благодаря вашей поддержке.
msi2102,_Boroda_ спасибо , что откликнулись.Прошу прощения , что ввела вас в заблуждение не дописав в каком столбце необходимо сделать нумерацию. Итак, при вводе новой строки с новыми данными ( столбец E-год), нумерация ( столбец В № п/п) должна автоматически поменяться. ( н-р в 7 строке ввели новую строчку, получается , что в В7 будет № 5, в В8 № 6) В столбце В у меня стоит формула , но если ввести дополнительную строку , то ячейка будет пустая, а нумерация продолжиться. Минус - отвратный шаг отсутствует. Я думала есть решение сделать макросом автозаполнение при вводе и удалении строк+ код навигации " шаг назад" .У меня в этой форме будут работать люди преклонного возраста, поэтому я старюсь максимально облегчить задачу благодаря вашей поддержке.GGR
Сообщение отредактировал GGR - Вторник, 14.10.2025, 17:44
Nic70y,спасибо за решение.Только не поняла ,а где сам код прописан. А можно этот макрос модернизировать.Хотелось бы чтобы сразу когда вставляешь строчку номер сам подтягивался и так же когда удаляешь строчку. Вообще такое возможно написать?
Nic70y,спасибо за решение.Только не поняла ,а где сам код прописан. А можно этот макрос модернизировать.Хотелось бы чтобы сразу когда вставляешь строчку номер сам подтягивался и так же когда удаляешь строчку. Вообще такое возможно написать?GGR
можно, но Ваш файл перегружен массивными формулами, боюсь он скоро сломается*
апдэйт: 1) в модуле книги, макрос на активацию листа: если лист = база -отключаем формулы
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object) aa = ActiveSheet.Name If aa = "база" Then 'вычисления формул вручную Application.Calculation = xlManual Else 'вычисления формул автоматически Application.Calculation = xlAutomatic End If End Sub
[/vba]
2) в модуле листа база 2 макроса, которые запускают макрос, который рисует формулы, а так же в одном из них разукраска
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'выделение ячеек Application.ScreenUpdating = False Application.EnableEvents = False aa = Target.Row ab = Target.Column ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 'работаем в пределах таблицы If aa < ba And ab < 10 Then 'если выделено > 1 ячейки If Target.Cells.Count > 1 Then 'обновляем формулы Call formula_ 'если выделена 1 ячейка Else 'разукрасим Range("a1:i" & ba).Interior.ColorIndex = 0 Range(Cells(aa, "a"), Cells(aa, "i")).Interior.ColorIndex = 38 Range(Cells(1, ab), Cells(ba, ab)).Interior.ColorIndex = 24 End If 'если выделение за пределами таблицы Else 'уберем цветное выдиление Range("a1:i" & ba).Interior.ColorIndex = 0 End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) 'изменение ячеек Application.ScreenUpdating = False Application.EnableEvents = False aa = Target.Row ab = Target.Column ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 'работаем в пределах таблицы If aa < ba And ab < 10 Then 'обновляем формулы Call formula_ End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
[/vba]
3) в Module1 2 макроса 1й для № книги, № стр-ы 2й те самые формулы
[vba]
Код
Sub u_18() Application.ScreenUpdating = False Application.EnableEvents = False aa = Cells(Rows.Count, "a").End(xlUp).Row - 1 ab = Application.Max(Range("a1:a" & aa)) For ac = 1 To ab ad = Application.Match(ac, Range("a1:a" & aa), 0) + 1 If ac < ab Then ae = Application.Match(ac + 1, Range("a1:a" & aa), 0) - 1 Else ae = aa End If af = Range("a" & ad).Value If af = "" Then Range("a" & ad & ":a" & ae) = ac Else Range("a" & ad & ":a" & ae).ClearContents End If Next ab = Application.Max(Range("c1:c" & aa)) For ac = 1 To ab ad = Application.Match(ac, Range("c1:c" & aa), 0) + 1 If ac < ab Then ae = Application.Match(ac + 1, Range("c1:c" & aa), 0) - 1 Else ae = aa End If If af = "" Then Range("c" & ad & ":c" & ae) = ac Else Range("c" & ad & ":c" & ae).ClearContents End If Next Application.ScreenUpdating = True Application.EnableEvents = True End Sub Sub formula_() Application.ScreenUpdating = True ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 Range("b3:b" & ba).FormulaR1C1 = "=ROW()-2" Range("b3:b" & ba) = Range("b3:b" & ba).Value ca = Range("d" & ba).Value Range("d3:d" & ba).FormulaR1C1 = "=IF(RC[-1],IF(RC[-1]=R[-1]C[-1],IF(RC[1],R[-1]C+1,R[-1]C),IF(RC[1],1,)),)" Range("d3:d" & ba) = Range("d3:d" & ba).Value Range("d" & ba + 1) = Application.Count(Range("d3:d" & ba)) Range("f" & ba + 1 & ":i" & ba + 1).FormulaR1C1 = "=SUM(R3C:R[-1]C)" Range("f" & ba + 1 & ":i" & ba + 1) = Range("f" & ba + 1 & ":i" & ba + 1).Value End Sub
[/vba]
файл прилагаю
еще апдэйт заметил, что в Вашем файле макрос отключает события кнопка ВКЛ/ВЫКЛ это как-то неправильно удалил его вместо этого на нее же повесил другой макрос, которых отключает только разукраску файл перезалил
можно, но Ваш файл перегружен массивными формулами, боюсь он скоро сломается*
апдэйт: 1) в модуле книги, макрос на активацию листа: если лист = база -отключаем формулы
[vba]
Код
Private Sub Workbook_SheetActivate(ByVal Sh As Object) aa = ActiveSheet.Name If aa = "база" Then 'вычисления формул вручную Application.Calculation = xlManual Else 'вычисления формул автоматически Application.Calculation = xlAutomatic End If End Sub
[/vba]
2) в модуле листа база 2 макроса, которые запускают макрос, который рисует формулы, а так же в одном из них разукраска
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'выделение ячеек Application.ScreenUpdating = False Application.EnableEvents = False aa = Target.Row ab = Target.Column ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 'работаем в пределах таблицы If aa < ba And ab < 10 Then 'если выделено > 1 ячейки If Target.Cells.Count > 1 Then 'обновляем формулы Call formula_ 'если выделена 1 ячейка Else 'разукрасим Range("a1:i" & ba).Interior.ColorIndex = 0 Range(Cells(aa, "a"), Cells(aa, "i")).Interior.ColorIndex = 38 Range(Cells(1, ab), Cells(ba, ab)).Interior.ColorIndex = 24 End If 'если выделение за пределами таблицы Else 'уберем цветное выдиление Range("a1:i" & ba).Interior.ColorIndex = 0 End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range) 'изменение ячеек Application.ScreenUpdating = False Application.EnableEvents = False aa = Target.Row ab = Target.Column ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 'работаем в пределах таблицы If aa < ba And ab < 10 Then 'обновляем формулы Call formula_ End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
[/vba]
3) в Module1 2 макроса 1й для № книги, № стр-ы 2й те самые формулы
[vba]
Код
Sub u_18() Application.ScreenUpdating = False Application.EnableEvents = False aa = Cells(Rows.Count, "a").End(xlUp).Row - 1 ab = Application.Max(Range("a1:a" & aa)) For ac = 1 To ab ad = Application.Match(ac, Range("a1:a" & aa), 0) + 1 If ac < ab Then ae = Application.Match(ac + 1, Range("a1:a" & aa), 0) - 1 Else ae = aa End If af = Range("a" & ad).Value If af = "" Then Range("a" & ad & ":a" & ae) = ac Else Range("a" & ad & ":a" & ae).ClearContents End If Next ab = Application.Max(Range("c1:c" & aa)) For ac = 1 To ab ad = Application.Match(ac, Range("c1:c" & aa), 0) + 1 If ac < ab Then ae = Application.Match(ac + 1, Range("c1:c" & aa), 0) - 1 Else ae = aa End If If af = "" Then Range("c" & ad & ":c" & ae) = ac Else Range("c" & ad & ":c" & ae).ClearContents End If Next Application.ScreenUpdating = True Application.EnableEvents = True End Sub Sub formula_() Application.ScreenUpdating = True ba = Cells(Rows.Count, "a").End(xlUp).Row - 1 Range("b3:b" & ba).FormulaR1C1 = "=ROW()-2" Range("b3:b" & ba) = Range("b3:b" & ba).Value ca = Range("d" & ba).Value Range("d3:d" & ba).FormulaR1C1 = "=IF(RC[-1],IF(RC[-1]=R[-1]C[-1],IF(RC[1],R[-1]C+1,R[-1]C),IF(RC[1],1,)),)" Range("d3:d" & ba) = Range("d3:d" & ba).Value Range("d" & ba + 1) = Application.Count(Range("d3:d" & ba)) Range("f" & ba + 1 & ":i" & ba + 1).FormulaR1C1 = "=SUM(R3C:R[-1]C)" Range("f" & ba + 1 & ":i" & ba + 1) = Range("f" & ba + 1 & ":i" & ba + 1).Value End Sub
[/vba]
файл прилагаю
еще апдэйт заметил, что в Вашем файле макрос отключает события кнопка ВКЛ/ВЫКЛ это как-то неправильно удалил его вместо этого на нее же повесил другой макрос, которых отключает только разукраску файл перезалилNic70y
Nic70y, добрый вечер. Спасибо за решение.ВКЛ/ ВЫКЛ отлично ( только в зоне таблицы).Протестировала. 1 В вашем варианте , отключены формулы в столбце D , поэтому когда вставляешь новую строчку нумерация не верная (нет продолжения). Файл приложила,7 строчка столбец D. Удаление строк прекрасно работает, все четко. 2.В моем варианте есть кнопка 2 (вы же мне ее и делали в теме " заполнение пустых ячеек соседними") она заполняет и возвращает в исходные значения ,чтобы потом вручную не стирать ,тк данные заполняются часто и могут меняться книг и № страниц.Эта функция должна обязательно остаться.( возврат). 3.Еще заметила , что при удалении в столбце E данных ( н-р 6 строчка ) тоже дает не верный результат в листе " Стат" должно показывать без этих данных. ( приложила файл как это было раньше ).
Можно пожалуйста доработать с учетом замечаний ? Файл действительно тормозит -но другой альтернативы кроме массива нет.
Nic70y, добрый вечер. Спасибо за решение.ВКЛ/ ВЫКЛ отлично ( только в зоне таблицы).Протестировала. 1 В вашем варианте , отключены формулы в столбце D , поэтому когда вставляешь новую строчку нумерация не верная (нет продолжения). Файл приложила,7 строчка столбец D. Удаление строк прекрасно работает, все четко. 2.В моем варианте есть кнопка 2 (вы же мне ее и делали в теме " заполнение пустых ячеек соседними") она заполняет и возвращает в исходные значения ,чтобы потом вручную не стирать ,тк данные заполняются часто и могут меняться книг и № страниц.Эта функция должна обязательно остаться.( возврат). 3.Еще заметила , что при удалении в столбце E данных ( н-р 6 строчка ) тоже дает не верный результат в листе " Стат" должно показывать без этих данных. ( приложила файл как это было раньше ).
Можно пожалуйста доработать с учетом замечаний ? Файл действительно тормозит -но другой альтернативы кроме массива нет.GGR
Nic70y, огромное спасибо за модернизацию файла. Все работает .Протестирую, все должно работать прекрасно. Какой масштабный проект. Мы маг макросов. Благодарю.
Nic70y, огромное спасибо за модернизацию файла. Все работает .Протестирую, все должно работать прекрасно. Какой масштабный проект. Мы маг макросов. Благодарю.GGR
Сообщение отредактировал GGR - Пятница, 17.10.2025, 19:07
Nic70y, протестировала . Подскажете пожалуйста, при изменении данных ( столбец С № страницы н-р строка 30) при обновлении 31 строка пустая , так не должно быть . В чем может быть проблема. Файл закрепила. Заметила еще , что не активна отмена операции. (стрелка не работает) ,а хотелось бы.
Nic70y, протестировала . Подскажете пожалуйста, при изменении данных ( столбец С № страницы н-р строка 30) при обновлении 31 строка пустая , так не должно быть . В чем может быть проблема. Файл закрепила. Заметила еще , что не активна отмена операции. (стрелка не работает) ,а хотелось бы.GGR
Nic70y,спасибо огромное. Тестирование провела,все работает как надо. Загружу новые данные и еще раз протестирую. Благодарю за то , что откликнулись и сделали такую чудесную форму.
Nic70y,спасибо огромное. Тестирование провела,все работает как надо. Загружу новые данные и еще раз протестирую. Благодарю за то , что откликнулись и сделали такую чудесную форму.GGR