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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск, сравнение,копирование, вставка части таблицы - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск, сравнение,копирование, вставка части таблицы (Макросы/Sub)
Поиск, сравнение,копирование, вставка части таблицы
zoro9 Дата: Среда, 25.05.2016, 12:10 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет ! начал только разбираться в макросах , нужна помощь или направление в котором нужно двигаться
Что хочется получить :
1)на 1 листе имеется таблица , там есть колонка "Номер норматива Код ресурса",для каждого вида работ есть код, нужно чтобы при вводе этого кода на втором листе ( вводится в первый столбец А) копировалась часть таблицы, до следующего кода. дальше если мы ниже скопированной таблицы вводим ещё один код, опять копировалась часть таблицы с нужным нам кодом.
P/S Я понимаю, что нужно делать поиск по этому столбцу, и при совпадении это кода копировалась часть таблицы на второй лист в пустую ячейку ( не знаю как так сделать, чтоб при совпадении кода копировалась область, можно к примеру вставить пустую строку между частями таблицы и сделать копирование до ближайшей пустой строки).
Я сам написал маленькие макросы, но это очень муторный процесс, для каждого кода забивать диапазон копирования, потом вручную выбирать макрос из списка с нужным кодом и т.д
Как я вижу примерный алгоритм работы:
1.Запуск макроса при активации ячеек столбца А с второй строки( лист 2)
2. Запускается макрос, где мы вводим код, который требуется искать
3.Поиск по столбцу А(лист 1)
4.Сравнение ( если совпадает ,то выполняется действие)
5.Действие: копирование определенной области( Но тут возникнут другие проблемы: при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред, не знаю. как это все реализовать, предложите может свои варианты
в файле также есть макросы, но опять таки, нужно сделать более универсально, и для множества позиций с разными кодами,
Знаю, что некоторые моменты непонятно объяснил, спрашивайте , что непонятно, попытаюсь объяснить
Заранее спасибо за помощь
К сообщению приложен файл: __.rar(32Kb)
 
Ответить
СообщениеВсем привет ! начал только разбираться в макросах , нужна помощь или направление в котором нужно двигаться
Что хочется получить :
1)на 1 листе имеется таблица , там есть колонка "Номер норматива Код ресурса",для каждого вида работ есть код, нужно чтобы при вводе этого кода на втором листе ( вводится в первый столбец А) копировалась часть таблицы, до следующего кода. дальше если мы ниже скопированной таблицы вводим ещё один код, опять копировалась часть таблицы с нужным нам кодом.
P/S Я понимаю, что нужно делать поиск по этому столбцу, и при совпадении это кода копировалась часть таблицы на второй лист в пустую ячейку ( не знаю как так сделать, чтоб при совпадении кода копировалась область, можно к примеру вставить пустую строку между частями таблицы и сделать копирование до ближайшей пустой строки).
Я сам написал маленькие макросы, но это очень муторный процесс, для каждого кода забивать диапазон копирования, потом вручную выбирать макрос из списка с нужным кодом и т.д
Как я вижу примерный алгоритм работы:
1.Запуск макроса при активации ячеек столбца А с второй строки( лист 2)
2. Запускается макрос, где мы вводим код, который требуется искать
3.Поиск по столбцу А(лист 1)
4.Сравнение ( если совпадает ,то выполняется действие)
5.Действие: копирование определенной области( Но тут возникнут другие проблемы: при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред, не знаю. как это все реализовать, предложите может свои варианты
в файле также есть макросы, но опять таки, нужно сделать более универсально, и для множества позиций с разными кодами,
Знаю, что некоторые моменты непонятно объяснил, спрашивайте , что непонятно, попытаюсь объяснить
Заранее спасибо за помощь

Автор - zoro9
Дата добавления - 25.05.2016 в 12:10
KuklP Дата: Среда, 25.05.2016, 12:56 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2006
Репутация: 436 ±
Замечаний: 20% ±

Файл не смотрел.
при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред
- почему это? Во-первых, при копировании ячеек совсем необязательно что-либо активировать. Во-вторых всегда есть возможность временно отключить отслеживание событий:
[vba]
Код
application.enableevents=0
[/vba]


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеФайл не смотрел.
при копировании на второй лист части таблицы произойдет опять активация ячеек и получится полный бред
- почему это? Во-первых, при копировании ячеек совсем необязательно что-либо активировать. Во-вторых всегда есть возможность временно отключить отслеживание событий:
[vba]
Код
application.enableevents=0
[/vba]

Автор - KuklP
Дата добавления - 25.05.2016 в 12:56
zoro9 Дата: Среда, 25.05.2016, 14:05 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, я понял вас, спасибо за совет
 
Ответить
СообщениеKuklP, я понял вас, спасибо за совет

Автор - zoro9
Дата добавления - 25.05.2016 в 14:05
sboy Дата: Среда, 25.05.2016, 14:52 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
добавил макрос в модуль 5, (кнопка выполнения рядом с Вашими на 2 Листе)

Но не понятен смысл копирования)))
если Вы ведет расчеты затрат по справочнику с Листа1, то может проще привести этот справочник 1 раз в нормальный вид, и вытягивать оттуда данные. И получать статьи затрат без кучи заголовков и прочей ненужной информации. И макрос не понадобится, с функцией ИНДЕКС получать все нормы по нормативам

То, что вы придумали, на мой взгляд, крайне неудобно в практической работе (составлении смет и т.п.)

П.С. при поиске "части таблицы для копирования" ориентировался на номер норматива (буква "Е" в начале), если есть нормативы с другими буквами, то надо переписывать поиск
К сообщению приложен файл: __.xlsm(34Kb)
 
Ответить
СообщениеДобрый день.
добавил макрос в модуль 5, (кнопка выполнения рядом с Вашими на 2 Листе)

Но не понятен смысл копирования)))
если Вы ведет расчеты затрат по справочнику с Листа1, то может проще привести этот справочник 1 раз в нормальный вид, и вытягивать оттуда данные. И получать статьи затрат без кучи заголовков и прочей ненужной информации. И макрос не понадобится, с функцией ИНДЕКС получать все нормы по нормативам

То, что вы придумали, на мой взгляд, крайне неудобно в практической работе (составлении смет и т.п.)

П.С. при поиске "части таблицы для копирования" ориентировался на номер норматива (буква "Е" в начале), если есть нормативы с другими буквами, то надо переписывать поиск

Автор - sboy
Дата добавления - 25.05.2016 в 14:52
sboy Дата: Среда, 25.05.2016, 14:54 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
[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

[/vba]


Сообщение отредактировал sboy - Среда, 25.05.2016, 15:54
 
Ответить
Сообщение[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

[/vba]

Автор - sboy
Дата добавления - 25.05.2016 в 14:54
zoro9 Дата: Среда, 25.05.2016, 15:39 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sboy,
[moder]Не нужно цитировать весь пост. Прочитайте Правила форума[/moder]
макрос почему-то не работает , пишет: Run-time error '424' object requiired
Справочник будет приведен в порядок, это проба! Задачу начальник поставил, там ещё его авторские хотелки, я с ними с большего почти разобрался, как он хочет видеть, поручил "творческую" задачу, программирование только немного проходил.
Да буква номера норматива будет меняться. Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ? Если много времени не займет, помогите пожалуйста.
Если не сложно поясните в общих чертах, как применить функцию "Индекс" для моей задачи
Заранее спасибо)


Сообщение отредактировал _Boroda_ - Среда, 25.05.2016, 17:07
 
Ответить
Сообщениеsboy,
[moder]Не нужно цитировать весь пост. Прочитайте Правила форума[/moder]
макрос почему-то не работает , пишет: Run-time error '424' object requiired
Справочник будет приведен в порядок, это проба! Задачу начальник поставил, там ещё его авторские хотелки, я с ними с большего почти разобрался, как он хочет видеть, поручил "творческую" задачу, программирование только немного проходил.
Да буква номера норматива будет меняться. Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ? Если много времени не займет, помогите пожалуйста.
Если не сложно поясните в общих чертах, как применить функцию "Индекс" для моей задачи
Заранее спасибо)

Автор - zoro9
Дата добавления - 25.05.2016 в 15:39
sboy Дата: Среда, 25.05.2016, 15:57 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
Исправил опечатку.
Выдавал ошибку, т.к. вы не ввели код для копирования (что искать?)
К сообщению приложен файл: 7816070.xlsm(35Kb)


Сообщение отредактировал sboy - Среда, 25.05.2016, 15:58
 
Ответить
СообщениеИсправил опечатку.
Выдавал ошибку, т.к. вы не ввели код для копирования (что искать?)

Автор - sboy
Дата добавления - 25.05.2016 в 15:57
sboy Дата: Среда, 25.05.2016, 16:08 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 198
Репутация: 49 ±
Замечаний: 0% ±

Excel 2007
Да буква номера норматива будет меняться.


Тогда однозначно надо норматив выносить в отдельный столбец от кода ресурса, иначе алгоритм для поиска будет очень проблематично прописывать.

Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ?


можно

как применить функцию "Индекс" для моей задачи


привести справочник в таблицу, где в строках будет наименование, например "затраты труда рабочих", а в столбцах значения, соответствующие разным нормативам
 
Ответить
Сообщение
Да буква номера норматива будет меняться.


Тогда однозначно надо норматив выносить в отдельный столбец от кода ресурса, иначе алгоритм для поиска будет очень проблематично прописывать.

Можно ли сделать, чтобы поиски копирование норматива проводился по нескольким листам, а потом все копировалось на лист с определенным названием ?


можно

как применить функцию "Индекс" для моей задачи


привести справочник в таблицу, где в строках будет наименование, например "затраты труда рабочих", а в столбцах значения, соответствующие разным нормативам

Автор - sboy
Дата добавления - 25.05.2016 в 16:08
zoro9 Дата: Среда, 25.05.2016, 16:26 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
sboy, Спасибо огромное, работает ваш код!
 
Ответить
Сообщениеsboy, Спасибо огромное, работает ваш код!

Автор - zoro9
Дата добавления - 25.05.2016 в 16:26
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск, сравнение,копирование, вставка части таблицы (Макросы/Sub)
Страница 1 из 11
Поиск:

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