Прошу Вашего совета в написании кода. Во вложении файл с примером. Задача такая: проверить, все ли регионы с листа «Адреса объектов» (столбец I) присутствуют на листе «ИТОГ». 1А. Если региона на листе «ИТОГ» нет, но дата открытия объекта в этом регионе по листу «Адреса объектов (столбец L) <= дате отчета (ячейка А1 на листе «Итог»), то под этот регион на листе «ИТОГ» нужно сделать шаблон. Для этого: - На листе «ИТОГ» копируются строки 22-30 (Санкт-Петербург) и вставляются под Казань со смещением следующего региона (здесь Краснодара) вниз. - В добавленном поле в левую верхнюю ячейку (А40) вписывается название отсутствующего региона, а из ячеек H40:NH45(текущий и прошлый год) удаляются данные. - копируются формулы из ячеек NH22:NH24 (текущий год) и вставляются в столбец с датой открытия объекта в регионе (ориентироваться на даты в строке 2); поле прошлого года остается пустым. - если дата открытия в регионе <01.01.2018, то формулы из ячеек NH22:NH24 (текущий год) вставляются в столбец с первого числа текущего года (H40:H42), а формулы из ячеек NH25:NH27(прошлый год) в столбец с датой открытия объекта в регионе в прошлом году (ориентироваться на даты в строке 7). Если же объект открыт раньше 01.01.2017, то формулы из ячеек NH25:NH27 вставляются с первого числа прошлого года (H43:H45).
1Б. Если объект в новом регионе открывается позже даты отчета, то добавлять шаблон для региона на лист «ИТОГ» не нужно (т.е. Саратов в отчет на 02.01.2018 не добавится)
Здравствуйте, уважаемые знатоки VBA!
Прошу Вашего совета в написании кода. Во вложении файл с примером. Задача такая: проверить, все ли регионы с листа «Адреса объектов» (столбец I) присутствуют на листе «ИТОГ». 1А. Если региона на листе «ИТОГ» нет, но дата открытия объекта в этом регионе по листу «Адреса объектов (столбец L) <= дате отчета (ячейка А1 на листе «Итог»), то под этот регион на листе «ИТОГ» нужно сделать шаблон. Для этого: - На листе «ИТОГ» копируются строки 22-30 (Санкт-Петербург) и вставляются под Казань со смещением следующего региона (здесь Краснодара) вниз. - В добавленном поле в левую верхнюю ячейку (А40) вписывается название отсутствующего региона, а из ячеек H40:NH45(текущий и прошлый год) удаляются данные. - копируются формулы из ячеек NH22:NH24 (текущий год) и вставляются в столбец с датой открытия объекта в регионе (ориентироваться на даты в строке 2); поле прошлого года остается пустым. - если дата открытия в регионе <01.01.2018, то формулы из ячеек NH22:NH24 (текущий год) вставляются в столбец с первого числа текущего года (H40:H42), а формулы из ячеек NH25:NH27(прошлый год) в столбец с датой открытия объекта в регионе в прошлом году (ориентироваться на даты в строке 7). Если же объект открыт раньше 01.01.2017, то формулы из ячеек NH25:NH27 вставляются с первого числа прошлого года (H43:H45).
1Б. Если объект в новом регионе открывается позже даты отчета, то добавлять шаблон для региона на лист «ИТОГ» не нужно (т.е. Саратов в отчет на 02.01.2018 не добавится)Iren
(с) Какого совета? Откройте редактор VBA, и пишите? А без совета никак?
[offtop]PS Если вы вдруг забыли, что означает слово "совет", или, что мне кажется более вероятным, никогда и не знали, поглядите толковый словарь.[/offtop]
(с) Какого совета? Откройте редактор VBA, и пишите? А без совета никак?
[offtop]PS Если вы вдруг забыли, что означает слово "совет", или, что мне кажется более вероятным, никогда и не знали, поглядите толковый словарь.[/offtop]RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Четверг, 08.02.2018, 18:12
[offtop]Такое задание-простыню даже прочитать лениво, не то что вникать. Рутина мало кого может вдохновить, ее и на работе - выше крыши, нам бы что-то интересное, нестандартное :)[/offtop]
[offtop]Такое задание-простыню даже прочитать лениво, не то что вникать. Рутина мало кого может вдохновить, ее и на работе - выше крыши, нам бы что-то интересное, нестандартное :)[/offtop]abtextime
Сообщение отредактировал abtextime - Четверг, 08.02.2018, 18:21
Сорри, с циклом не могу сообразить без совета. Искала на форуме, но не поняла как адаптировать под мою задачу. И как использовать данные отсутствующего объекта - дату, название... Может как-то строку с этим объектом определить? И прыгающие условия по строкам для IF - сначала одна, потом другая строка... Поэтому такая простыня с условиями. Хотя задача на вид простая - руками в экселе делается быстро (если 1-2 новых объекта) - а вот как в код это превратить (на случай добавления списка объектов)?
Может, хотя бы частично кто-нибудь подскажет, как это превратить в код. Со многим разобралась, но эта, последняя часть в коде - никак не идет.
А до нестандартного мне еще ооочень далеко; стандартную бы рутину автоматизаровать...
Сорри, с циклом не могу сообразить без совета. Искала на форуме, но не поняла как адаптировать под мою задачу. И как использовать данные отсутствующего объекта - дату, название... Может как-то строку с этим объектом определить? И прыгающие условия по строкам для IF - сначала одна, потом другая строка... Поэтому такая простыня с условиями. Хотя задача на вид простая - руками в экселе делается быстро (если 1-2 новых объекта) - а вот как в код это превратить (на случай добавления списка объектов)?
Может, хотя бы частично кто-нибудь подскажет, как это превратить в код. Со многим разобралась, но эта, последняя часть в коде - никак не идет.
А до нестандартного мне еще ооочень далеко; стандартную бы рутину автоматизаровать...Iren
проверить, все ли регионы с листа «Адреса объектов» (столбец I) присутствуют на листе «ИТОГ».
[vba]
Код
Option Explicit
Sub Check_region() Dim shAdr As Worksheet, shTotals As Worksheet Dim rng As Range
Set shAdr = Worksheets("Адреса объектов") Set shTotals = Worksheets("ИТОГ")
Dim i As Long For i = 3 To shAdr.UsedRange.Rows.Count Set rng = shTotals.Columns(1). _ Find(shAdr.Cells(i, 9)) If rng Is Nothing Then MsgBox "Не найдено: " & shAdr.Cells(i, 9), vbOKOnly, _ "Выход" Exit For End If Next End Sub
проверить, все ли регионы с листа «Адреса объектов» (столбец I) присутствуют на листе «ИТОГ».
[vba]
Код
Option Explicit
Sub Check_region() Dim shAdr As Worksheet, shTotals As Worksheet Dim rng As Range
Set shAdr = Worksheets("Адреса объектов") Set shTotals = Worksheets("ИТОГ")
Dim i As Long For i = 3 To shAdr.UsedRange.Rows.Count Set rng = shTotals.Columns(1). _ Find(shAdr.Cells(i, 9)) If rng Is Nothing Then MsgBox "Не найдено: " & shAdr.Cells(i, 9), vbOKOnly, _ "Выход" Exit For End If Next End Sub