Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Проверка наличия и добавление отсутствующего объекта - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка наличия и добавление отсутствующего объекта (Макросы/Sub)
Проверка наличия и добавление отсутствующего объекта
Iren Дата: Четверг, 08.02.2018, 17:56 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2010
Здравствуйте, уважаемые знатоки 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 не добавится)
К сообщению приложен файл: __-1-.xlsm(95Kb)


Сообщение отредактировал Iren - Пятница, 09.02.2018, 15:39
 
Ответить
СообщениеЗдравствуйте, уважаемые знатоки 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
Дата добавления - 08.02.2018 в 17:56
RAN Дата: Четверг, 08.02.2018, 18:08 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4690
Репутация: 946 ±
Замечаний: 0% ±

2010
Прошу Вашего совета в написании кода.

Цитата
Королева, я восхищен!
(с)
Какого совета? Откройте редактор VBA, и пишите? А без совета никак?

[offtop]PS Если вы вдруг забыли, что означает слово "совет", или, что мне кажется более вероятным, никогда и не знали, поглядите толковый словарь.[/offtop]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Четверг, 08.02.2018, 18:12
 
Ответить
Сообщение
Прошу Вашего совета в написании кода.

Цитата
Королева, я восхищен!
(с)
Какого совета? Откройте редактор VBA, и пишите? А без совета никак?

[offtop]PS Если вы вдруг забыли, что означает слово "совет", или, что мне кажется более вероятным, никогда и не знали, поглядите толковый словарь.[/offtop]

Автор - RAN
Дата добавления - 08.02.2018 в 18:08
abtextime Дата: Четверг, 08.02.2018, 18:20 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 549
Репутация: 73 ±
Замечаний: 0% ±

Excel 2010
[offtop]Такое задание-простыню даже прочитать лениво, не то что вникать. Рутина мало кого может вдохновить, ее и на работе - выше крыши, нам бы что-то интересное, нестандартное :)[/offtop]


Сообщение отредактировал abtextime - Четверг, 08.02.2018, 18:21
 
Ответить
Сообщение[offtop]Такое задание-простыню даже прочитать лениво, не то что вникать. Рутина мало кого может вдохновить, ее и на работе - выше крыши, нам бы что-то интересное, нестандартное :)[/offtop]

Автор - abtextime
Дата добавления - 08.02.2018 в 18:20
Iren Дата: Пятница, 09.02.2018, 09:59 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2010
Сорри, с циклом не могу сообразить без совета. Искала на форуме, но не поняла как адаптировать под мою задачу.
И как использовать данные отсутствующего объекта - дату, название... Может как-то строку с этим объектом определить?
И прыгающие условия по строкам для IF - сначала одна, потом другая строка...
Поэтому такая простыня с условиями. Хотя задача на вид простая - руками в экселе делается быстро (если 1-2 новых объекта) - а вот как в код это превратить (на случай добавления списка объектов)?

Может, хотя бы частично кто-нибудь подскажет, как это превратить в код.
Со многим разобралась, но эта, последняя часть в коде - никак не идет.

А до нестандартного мне еще ооочень далеко; стандартную бы рутину автоматизаровать...
 
Ответить
СообщениеСорри, с циклом не могу сообразить без совета. Искала на форуме, но не поняла как адаптировать под мою задачу.
И как использовать данные отсутствующего объекта - дату, название... Может как-то строку с этим объектом определить?
И прыгающие условия по строкам для IF - сначала одна, потом другая строка...
Поэтому такая простыня с условиями. Хотя задача на вид простая - руками в экселе делается быстро (если 1-2 новых объекта) - а вот как в код это превратить (на случай добавления списка объектов)?

Может, хотя бы частично кто-нибудь подскажет, как это превратить в код.
Со многим разобралась, но эта, последняя часть в коде - никак не идет.

А до нестандартного мне еще ооочень далеко; стандартную бы рутину автоматизаровать...

Автор - Iren
Дата добавления - 09.02.2018 в 09:59
InExSu Дата: Воскресенье, 11.02.2018, 23:16 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 292
Репутация: 32 ±
Замечаний: 80% ±

Excel 2010
Привет!
Для начала ...
проверить, все ли регионы с листа «Адреса объектов» (столбец 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
[/vba]
 
Ответить
СообщениеПривет!
Для начала ...
проверить, все ли регионы с листа «Адреса объектов» (столбец 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
[/vba]

Автор - InExSu
Дата добавления - 11.02.2018 в 23:16
Iren Дата: Понедельник, 12.02.2018, 16:28 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

2010
InExSu, спасибо огромное за подсказку!
После применения Find дело пошло! hands

С условиями для IF, кажется, разобралась сама... сейчас тестировать буду.
 
Ответить
СообщениеInExSu, спасибо огромное за подсказку!
После применения Find дело пошло! hands

С условиями для IF, кажется, разобралась сама... сейчас тестировать буду.

Автор - Iren
Дата добавления - 12.02.2018 в 16:28
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка наличия и добавление отсутствующего объекта (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!