Привет, ребята, у меня возникла серьезная проблема - не могу написать макрос. Смысл таков: у меня есть книги с большим количеством листов - порядка 200-300. На каждом листе находятся упорядоченной структуры данные, которые мне нужно объединить на одном листе. Наглядно - в прикрепленном файле. На листе "исходник" показана структура данных. В ячейке А2 находится номер скважины, оранжевым и зеленым выделены данные для копирования. На листе "результат" показано то, что должно быть в итоге, а именно: 1) номер скважины должен копироваться из ячейки А2 исходника; 2) строка параметров должна автоматически прописываться (от qж до Нсп); 3) данные из оранжевых областей копируются и транспонируются в область с3-l3, данные из зеленой области - в м3-р33; 4) в столбце в3-в33 должны автоматически появляться номера дней (это вроде как месячные данные, посему берем для каждого месяца 31 день, чтобы не париться); 5) !!!!самое главное!!!!! для одного листа я могу записать последовательность действий вручную, но когда в одной книге их 200 - проблема неразрешимая. Мне нужно, чтобы с помощью нового макроса выполнялись пункты 1-4, а затем (с этим и проблема) после копирования данных до 139 строки исходника на лист с результатами Эксель переходил на следующий лист и делал то же самое, продолжая таблицу вниз. Как это сделать - я не знаю, поскольку в программировании полный нуль. Буду очень благодарен, если кто-то сможет помочь.
Привет, ребята, у меня возникла серьезная проблема - не могу написать макрос. Смысл таков: у меня есть книги с большим количеством листов - порядка 200-300. На каждом листе находятся упорядоченной структуры данные, которые мне нужно объединить на одном листе. Наглядно - в прикрепленном файле. На листе "исходник" показана структура данных. В ячейке А2 находится номер скважины, оранжевым и зеленым выделены данные для копирования. На листе "результат" показано то, что должно быть в итоге, а именно: 1) номер скважины должен копироваться из ячейки А2 исходника; 2) строка параметров должна автоматически прописываться (от qж до Нсп); 3) данные из оранжевых областей копируются и транспонируются в область с3-l3, данные из зеленой области - в м3-р33; 4) в столбце в3-в33 должны автоматически появляться номера дней (это вроде как месячные данные, посему берем для каждого месяца 31 день, чтобы не париться); 5) !!!!самое главное!!!!! для одного листа я могу записать последовательность действий вручную, но когда в одной книге их 200 - проблема неразрешимая. Мне нужно, чтобы с помощью нового макроса выполнялись пункты 1-4, а затем (с этим и проблема) после копирования данных до 139 строки исходника на лист с результатами Эксель переходил на следующий лист и делал то же самое, продолжая таблицу вниз. Как это сделать - я не знаю, поскольку в программировании полный нуль. Буду очень благодарен, если кто-то сможет помочь.ignat
RAN, спасибо, на работе завтра попробую применить. С горя начал уже читать книги по VBA, но, поскольку дело к НГ, и проблема сильно жмет, толку особо не вышло. Об успехах отпишусь по мере получения результата.
RAN, спасибо, на работе завтра попробую применить. С горя начал уже читать книги по VBA, но, поскольку дело к НГ, и проблема сильно жмет, толку особо не вышло. Об успехах отпишусь по мере получения результата.ignat
В целом задача примерно понятна, в деталях нет. Я бы делал на словаре. Цикл по листам, в каждом цикл по данным - собираем в словарь по ключу номер_скважины/дата/"обв" эти иксы (если там числа, то их можно суммировать при повторе ключа, если строки - собирать через запятую). Изучите работу с словарём (scripting.dictionary) и массивы, чтоб побыстрее шевелилось. Далее заготавливаем таблицу для результатов (или по количеству собранного, или вручную, или в процессе, не важно как). Теперь цикл по таблице (кстати, данные шапки тоже можно заранее собрать в словарь, из которого затем выгрузить - чтоб не забыть какую-нибудь qг), на каждом шаге (для каждой ячейки) собираем ключ, по ключу из словаря извлекаем данные.
Работа не на 5 минут, так что думаю ради удовольствия никто не сделает. А вот в разделе "работа" думаю за сутки реально договориться. А если сами разберётесь/сделаете по такому алгоритму - то в дальнейшем много чего сможете легко делать сами.
В целом задача примерно понятна, в деталях нет. Я бы делал на словаре. Цикл по листам, в каждом цикл по данным - собираем в словарь по ключу номер_скважины/дата/"обв" эти иксы (если там числа, то их можно суммировать при повторе ключа, если строки - собирать через запятую). Изучите работу с словарём (scripting.dictionary) и массивы, чтоб побыстрее шевелилось. Далее заготавливаем таблицу для результатов (или по количеству собранного, или вручную, или в процессе, не важно как). Теперь цикл по таблице (кстати, данные шапки тоже можно заранее собрать в словарь, из которого затем выгрузить - чтоб не забыть какую-нибудь qг), на каждом шаге (для каждой ячейки) собираем ключ, по ключу из словаря извлекаем данные.
Работа не на 5 минут, так что думаю ради удовольствия никто не сделает. А вот в разделе "работа" думаю за сутки реально договориться. А если сами разберётесь/сделаете по такому алгоритму - то в дальнейшем много чего сможете легко делать сами.Hugo