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

Вход

Регистрация

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

 

= Мир MS Excel/Копирование строк по условию - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование строк по условию
Копирование строк по условию
Albatros Дата: Четверг, 30.05.2013, 16:52 | Сообщение № 21
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Уважаемые профи, добрый день.
Помогите, пожалуйста, решить проблему.
Нужен макрос (под ключ, что называется) для копирования строк по заданному условию. Поясню подробнее.
На отдельных листах в файле EXCEL (пока их два, но может быть и больше) располагаются одна под другой одинаковые таблицы по 15 колонок. Количество таблиц на разных листах различно. В графе G проставлены даты по количеству дней текущего месяца. На третьем листе в ячейке A1 вручную проставляется любая дата. Нужен макрос, который скопирует с двух листов строки (полностью), содержащие дату, указанную в ячейке A1. Самому задачу не осилить. Может быть кто поможет дилетанту?
Заранее спасибо!
 
Ответить
СообщениеУважаемые профи, добрый день.
Помогите, пожалуйста, решить проблему.
Нужен макрос (под ключ, что называется) для копирования строк по заданному условию. Поясню подробнее.
На отдельных листах в файле EXCEL (пока их два, но может быть и больше) располагаются одна под другой одинаковые таблицы по 15 колонок. Количество таблиц на разных листах различно. В графе G проставлены даты по количеству дней текущего месяца. На третьем листе в ячейке A1 вручную проставляется любая дата. Нужен макрос, который скопирует с двух листов строки (полностью), содержащие дату, указанную в ячейке A1. Самому задачу не осилить. Может быть кто поможет дилетанту?
Заранее спасибо!

Автор - Albatros
Дата добавления - 30.05.2013 в 16:52
Albatros Дата: Четверг, 30.05.2013, 16:57 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Забыл добавить, что скопированные строки должны располагаться одна под другой начиная с ячейки А2
 
Ответить
СообщениеЗабыл добавить, что скопированные строки должны располагаться одна под другой начиная с ячейки А2

Автор - Albatros
Дата добавления - 30.05.2013 в 16:57
AndreTM Дата: Четверг, 30.05.2013, 17:45 | Сообщение № 23
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Albatros, правила форума и не для вас тоже писаны?
Без примера - никак. Если всё же озаботитесь - расскажите, по какому принципу нужно отбирать листы, из которых копировать строки (представьте себе, что листов стало 1000...) Ну и такой вопрос - принципиально ли хранить несколько таблиц на одном листе, нельзя ли разнести таблицы на отдельные листы (один лист - одна таблица)?


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеAlbatros, правила форума и не для вас тоже писаны?
Без примера - никак. Если всё же озаботитесь - расскажите, по какому принципу нужно отбирать листы, из которых копировать строки (представьте себе, что листов стало 1000...) Ну и такой вопрос - принципиально ли хранить несколько таблиц на одном листе, нельзя ли разнести таблицы на отдельные листы (один лист - одна таблица)?

Автор - AndreTM
Дата добавления - 30.05.2013 в 17:45
KuklP Дата: Четверг, 30.05.2013, 19:15 | Сообщение № 24
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Цитата (Albatros)
Нужен макрос (под ключ, что называется)
Это в раздел "Работа":)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Цитата (Albatros)
Нужен макрос (под ключ, что называется)
Это в раздел "Работа":)

Автор - KuklP
Дата добавления - 30.05.2013 в 19:15
Albatros Дата: Пятница, 31.05.2013, 13:04 | Сообщение № 25
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Прошу прощения, если я что-то нарушил. Не очень ориентируюсь в форумах...
Уважаемый AndreTM, спасибо за отклик. Исправляюсь. Файл с образцом прикрепил. Количество листов всего два. И это принципиально. На каждом таблицы по одному виду продукта. Больше не будет.А вот разносить (один лист - одна таблица) весьма проблематично, так как на листе может быть неограниченное количество таблиц. И вот хотелось бы, чтобы макрос собирал строки с одинаковой датой на третий лист. Название листов принципиально? Моих скудных познаний хватит, чтобы потом их в макросе переименовать...
К сообщению приложен файл: 0405653.xlsx (83.5 Kb)
 
Ответить
СообщениеПрошу прощения, если я что-то нарушил. Не очень ориентируюсь в форумах...
Уважаемый AndreTM, спасибо за отклик. Исправляюсь. Файл с образцом прикрепил. Количество листов всего два. И это принципиально. На каждом таблицы по одному виду продукта. Больше не будет.А вот разносить (один лист - одна таблица) весьма проблематично, так как на листе может быть неограниченное количество таблиц. И вот хотелось бы, чтобы макрос собирал строки с одинаковой датой на третий лист. Название листов принципиально? Моих скудных познаний хватит, чтобы потом их в макросе переименовать...

Автор - Albatros
Дата добавления - 31.05.2013 в 13:04
AndreTM Дата: Пятница, 31.05.2013, 22:48 | Сообщение № 26
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Вообще-то, правильная методика учета как раз и предполагает, что "один лист - одна таблица". Другое дело, что, может быть,и не надо разносить таблицы - а надо, наоборот, объединить их все в одну, введя дополнительное поле для того, чтобы отличать, к какой "таблице" относится строка; да и вообще, если структуры данных (столбцы) в таблицах на разных листах совпадают тоже - то и разные листы можно объединить в один, опять же, квалифицировав нужный лист ("вид продукта") отдельным полем-столбцом... и получим обычную накопительную таблицу БД smile

Ладно, давайте решим пока так, как есть.
Первый вариант - копированием строк с исходных листов. Недостаток - переносится ВСЁ, включая форматирование и формулы, так что, возможно, придётся дополнительно править момент переноса строки.
Второй вариант - одним запросом через ADO. Но, опять же, всплывает известная проблема Jet'а с обработкой дат...
К сообщению приложен файл: 10-4594-2-1-.zip (77.8 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Суббота, 01.06.2013, 00:25
 
Ответить
СообщениеВообще-то, правильная методика учета как раз и предполагает, что "один лист - одна таблица". Другое дело, что, может быть,и не надо разносить таблицы - а надо, наоборот, объединить их все в одну, введя дополнительное поле для того, чтобы отличать, к какой "таблице" относится строка; да и вообще, если структуры данных (столбцы) в таблицах на разных листах совпадают тоже - то и разные листы можно объединить в один, опять же, квалифицировав нужный лист ("вид продукта") отдельным полем-столбцом... и получим обычную накопительную таблицу БД smile

Ладно, давайте решим пока так, как есть.
Первый вариант - копированием строк с исходных листов. Недостаток - переносится ВСЁ, включая форматирование и формулы, так что, возможно, придётся дополнительно править момент переноса строки.
Второй вариант - одним запросом через ADO. Но, опять же, всплывает известная проблема Jet'а с обработкой дат...

Автор - AndreTM
Дата добавления - 31.05.2013 в 22:48
Albatros Дата: Понедельник, 03.06.2013, 09:32 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

АндреТМ (я так думаю, что Вас зовут Андрей), спасибо огромное!!! Работают оба варианта, и оба меня вполне устраивают! А что касается конечного форматирования - это как раз не важно! Собранные данные все равно копируются в другой файл как текст (без формата).
Спасибо Вам огромное! Удачи во всем!
 
Ответить
СообщениеАндреТМ (я так думаю, что Вас зовут Андрей), спасибо огромное!!! Работают оба варианта, и оба меня вполне устраивают! А что касается конечного форматирования - это как раз не важно! Собранные данные все равно копируются в другой файл как текст (без формата).
Спасибо Вам огромное! Удачи во всем!

Автор - Albatros
Дата добавления - 03.06.2013 в 09:32
Albatros Дата: Понедельник, 03.06.2013, 10:38 | Сообщение № 28
Группа: Пользователи
Ранг: Новичок
Сообщений: 11
Репутация: 0 ±
Замечаний: 0% ±

Упс. Поспешил немножко. Вы абсолютно правы. Копирование с формулами (по первому варианту) дало не совсем правильный результат. Можно ли в программу добавить такое условие, что копируемые строки (в них есть и формулы, и числовые значения) будут вставляться как текст?
 
Ответить
СообщениеУпс. Поспешил немножко. Вы абсолютно правы. Копирование с формулами (по первому варианту) дало не совсем правильный результат. Можно ли в программу добавить такое условие, что копируемые строки (в них есть и формулы, и числовые значения) будут вставляться как текст?

Автор - Albatros
Дата добавления - 03.06.2013 в 10:38
AndreTM Дата: Понедельник, 03.06.2013, 11:03 | Сообщение № 29
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Ну, можно сходу заменить строку
[vba]
Код
cell.EntireRow.Copy Cells(i, 1)
[/vba]на строки
[vba]
Код
cell.EntireRow.Copy
Cells(i, 1).PasteSpecial (xlValues)
[/vba]Тогда будут копироваться только значения.

Если же копировать нужно вообще всю строку как текст - то придется обработать все ячейки строки.
Например так (код, опять же, вместо предыдущего):
[vba]
Код
For Each c In Intersect(cell.EntireRow, Sheets(cName).UsedRange)
       Cells(i, c.Column) = CStr(c.Value)
Next
[/vba]Не забудьте добавить описание переменной с в Dim !


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Понедельник, 03.06.2013, 11:03
 
Ответить
СообщениеНу, можно сходу заменить строку
[vba]
Код
cell.EntireRow.Copy Cells(i, 1)
[/vba]на строки
[vba]
Код
cell.EntireRow.Copy
Cells(i, 1).PasteSpecial (xlValues)
[/vba]Тогда будут копироваться только значения.

Если же копировать нужно вообще всю строку как текст - то придется обработать все ячейки строки.
Например так (код, опять же, вместо предыдущего):
[vba]
Код
For Each c In Intersect(cell.EntireRow, Sheets(cName).UsedRange)
       Cells(i, c.Column) = CStr(c.Value)
Next
[/vba]Не забудьте добавить описание переменной с в Dim !

Автор - AndreTM
Дата добавления - 03.06.2013 в 11:03
narainbow Дата: Пятница, 14.06.2013, 05:05 | Сообщение № 30
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Прошу Вашей помощи никак не могу понять как правильно записать макрос условия которого состоят в следующем есть общая таблица (лист 1) учет выполнения заказа, нужно из этой таблицы скопировать строки определенных заказчиков в листы этих заказчиков, так чтоб они копировались в листы заказчиков по порядку.
К сообщению приложен файл: 2867288.xls (49.0 Kb)
 
Ответить
СообщениеПрошу Вашей помощи никак не могу понять как правильно записать макрос условия которого состоят в следующем есть общая таблица (лист 1) учет выполнения заказа, нужно из этой таблицы скопировать строки определенных заказчиков в листы этих заказчиков, так чтоб они копировались в листы заказчиков по порядку.

Автор - narainbow
Дата добавления - 14.06.2013 в 05:05
fyx Дата: Вторник, 01.04.2014, 12:13 | Сообщение № 31
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Добрый день.
Есть строки с указанием количества позиций.
Нужно сделать столько копий этой строки, сколько указанно в столбце количество.
То есть 5 брюк, должно стать 5 строк с брюками.
[moder]Читаем Правила форума
Один вопрос - одна тема
Эта тема закрыта
К сообщению приложен файл: 6534168.xls (34.0 Kb)


Сообщение отредактировал fyx - Вторник, 01.04.2014, 12:14
 
Ответить
СообщениеДобрый день.
Есть строки с указанием количества позиций.
Нужно сделать столько копий этой строки, сколько указанно в столбце количество.
То есть 5 брюк, должно стать 5 строк с брюками.
[moder]Читаем Правила форума
Один вопрос - одна тема
Эта тема закрыта

Автор - fyx
Дата добавления - 01.04.2014 в 12:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование строк по условию
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

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