Всем привет ! начал только разбираться в макросах , нужна помощь или направление в котором нужно двигаться Что хочется получить : 1)на 1 листе имеется таблица , там есть колонка "Номер норматива Код ресурса",для каждого вида работ есть код, нужно чтобы при вводе этого кода на втором листе ( вводится в первый столбец А) копировалась часть таблицы, до следующего кода. дальше если мы ниже скопированной таблицы вводим ещё один код, опять копировалась часть таблицы с нужным нам кодом. P/S Я понимаю, что нужно делать поиск по этому столбцу, и при совпадении это кода копировалась часть таблицы на второй лист в пустую ячейку ( не знаю как так сделать, чтоб при совпадении кода копировалась область, можно к примеру вставить пустую строку между частями таблицы и сделать копирование до ближайшей пустой строки). Я сам написал маленькие макросы, но это очень муторный процесс, для каждого кода забивать диапазон копирования, потом вручную выбирать макрос из списка с нужным кодом и т.д Как я вижу примерный алгоритм работы: 1.Запуск макроса при активации ячеек столбца А с второй строки( лист 2) 2. Запускается макрос, где мы вводим код, который требуется искать 3.Поиск по столбцу А(лист 1) 4.Сравнение ( если совпадает ,то выполняется действие) 5.Действие: копирование определенной области( Но тут возникнут другие проблемы: при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред, не знаю. как это все реализовать, предложите может свои варианты в файле также есть макросы, но опять таки, нужно сделать более универсально, и для множества позиций с разными кодами, Знаю, что некоторые моменты непонятно объяснил, спрашивайте , что непонятно, попытаюсь объяснить Заранее спасибо за помощь
Всем привет ! начал только разбираться в макросах , нужна помощь или направление в котором нужно двигаться Что хочется получить : 1)на 1 листе имеется таблица , там есть колонка "Номер норматива Код ресурса",для каждого вида работ есть код, нужно чтобы при вводе этого кода на втором листе ( вводится в первый столбец А) копировалась часть таблицы, до следующего кода. дальше если мы ниже скопированной таблицы вводим ещё один код, опять копировалась часть таблицы с нужным нам кодом. P/S Я понимаю, что нужно делать поиск по этому столбцу, и при совпадении это кода копировалась часть таблицы на второй лист в пустую ячейку ( не знаю как так сделать, чтоб при совпадении кода копировалась область, можно к примеру вставить пустую строку между частями таблицы и сделать копирование до ближайшей пустой строки). Я сам написал маленькие макросы, но это очень муторный процесс, для каждого кода забивать диапазон копирования, потом вручную выбирать макрос из списка с нужным кодом и т.д Как я вижу примерный алгоритм работы: 1.Запуск макроса при активации ячеек столбца А с второй строки( лист 2) 2. Запускается макрос, где мы вводим код, который требуется искать 3.Поиск по столбцу А(лист 1) 4.Сравнение ( если совпадает ,то выполняется действие) 5.Действие: копирование определенной области( Но тут возникнут другие проблемы: при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред, не знаю. как это все реализовать, предложите может свои варианты в файле также есть макросы, но опять таки, нужно сделать более универсально, и для множества позиций с разными кодами, Знаю, что некоторые моменты непонятно объяснил, спрашивайте , что непонятно, попытаюсь объяснить Заранее спасибо за помощьzoro9
при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред
- почему это? Во-первых, при копировании ячеек совсем необязательно что-либо активировать. Во-вторых всегда есть возможность временно отключить отслеживание событий: [vba]
при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред
- почему это? Во-первых, при копировании ячеек совсем необязательно что-либо активировать. Во-вторых всегда есть возможность временно отключить отслеживание событий: [vba]
Добрый день. добавил макрос в модуль 5, (кнопка выполнения рядом с Вашими на 2 Листе)
Но не понятен смысл копирования))) если Вы ведет расчеты затрат по справочнику с Листа1, то может проще привести этот справочник 1 раз в нормальный вид, и вытягивать оттуда данные. И получать статьи затрат без кучи заголовков и прочей ненужной информации. И макрос не понадобится, с функцией ИНДЕКС получать все нормы по нормативам
То, что вы придумали, на мой взгляд, крайне неудобно в практической работе (составлении смет и т.п.)
П.С. при поиске "части таблицы для копирования" ориентировался на номер норматива (буква "Е" в начале), если есть нормативы с другими буквами, то надо переписывать поиск
Добрый день. добавил макрос в модуль 5, (кнопка выполнения рядом с Вашими на 2 Листе)
Но не понятен смысл копирования))) если Вы ведет расчеты затрат по справочнику с Листа1, то может проще привести этот справочник 1 раз в нормальный вид, и вытягивать оттуда данные. И получать статьи затрат без кучи заголовков и прочей ненужной информации. И макрос не понадобится, с функцией ИНДЕКС получать все нормы по нормативам
То, что вы придумали, на мой взгляд, крайне неудобно в практической работе (составлении смет и т.п.)
П.С. при поиске "части таблицы для копирования" ориентировался на номер норматива (буква "Е" в начале), если есть нормативы с другими буквами, то надо переписывать поискsboy
Sub StrannoeKopirovanie() Dim irow1 As Double Dim irow2 As Double Dim rFR As Range Dim chek As Boolean Dim rCopy As Range
Sheets(2).Activate irow2 = Cells(Rows.Count, 2).End(xlUp).Row sF = Cells(irow2 + 1, 1).Value If sF = Empty Then Exit Sub Sheets(1).Activate irow1 = Cells(Rows.Count, 1).End(xlUp).Row Set rFR = Range(Cells(1, 1), Cells(irow1, 1)).Find(what:=sF)
For r = rFR.Row + 1 To irow1 chek = Cells(r, 1).Value Like "Å*" If chek = True Then r = r - 1 GoTo kopi End If Next r
kopi: Set rCopy = Range(rFR, Cells(r, 4)) rCopy.Copy Sheets(2).Activate Cells(irow2 + 1, 1).PasteSpecial (xlPasteValues) End Sub
[/vba]
[vba]
Код
Sub StrannoeKopirovanie() Dim irow1 As Double Dim irow2 As Double Dim rFR As Range Dim chek As Boolean Dim rCopy As Range
Sheets(2).Activate irow2 = Cells(Rows.Count, 2).End(xlUp).Row sF = Cells(irow2 + 1, 1).Value If sF = Empty Then Exit Sub Sheets(1).Activate irow1 = Cells(Rows.Count, 1).End(xlUp).Row Set rFR = Range(Cells(1, 1), Cells(irow1, 1)).Find(what:=sF)
For r = rFR.Row + 1 To irow1 chek = Cells(r, 1).Value Like "Å*" If chek = True Then r = r - 1 GoTo kopi End If Next r
kopi: Set rCopy = Range(rFR, Cells(r, 4)) rCopy.Copy Sheets(2).Activate Cells(irow2 + 1, 1).PasteSpecial (xlPasteValues) End Sub
sboy, [moder]Не нужно цитировать весь пост. Прочитайте Правила форума[/moder] макрос почему-то не работает , пишет: Run-time error '424' object requiired Справочник будет приведен в порядок, это проба! Задачу начальник поставил, там ещё его авторские хотелки, я с ними с большего почти разобрался, как он хочет видеть, поручил "творческую" задачу, программирование только немного проходил. Да буква номера норматива будет меняться. Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ? Если много времени не займет, помогите пожалуйста. Если не сложно поясните в общих чертах, как применить функцию "Индекс" для моей задачи Заранее спасибо)
sboy, [moder]Не нужно цитировать весь пост. Прочитайте Правила форума[/moder] макрос почему-то не работает , пишет: Run-time error '424' object requiired Справочник будет приведен в порядок, это проба! Задачу начальник поставил, там ещё его авторские хотелки, я с ними с большего почти разобрался, как он хочет видеть, поручил "творческую" задачу, программирование только немного проходил. Да буква номера норматива будет меняться. Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ? Если много времени не займет, помогите пожалуйста. Если не сложно поясните в общих чертах, как применить функцию "Индекс" для моей задачи Заранее спасибо)zoro9
Сообщение отредактировал _Boroda_ - Среда, 25.05.2016, 17:07
привести справочник в таблицу, где в строках будет наименование, например "затраты труда рабочих", а в столбцах значения, соответствующие разным нормативам
привести справочник в таблицу, где в строках будет наименование, например "затраты труда рабочих", а в столбцах значения, соответствующие разным нормативамsboy