Добрый день, прошу помочь в составлении макроса, своих знаний пока не хватает. Программа формирует отчёт файл.xls(приложен), в котором необходимо найти и скопировать показания(выделены желтым) в существующую книгу. В макрорекордере был составлен код, но возникла необходимость поиска этих данных, т.к ежемесячно их расположение относительно строк и столбцов может изменяться. Думаю искать необходимо по двум критериям - система и даты (выделены зелёным) [vba]
Добрый день, прошу помочь в составлении макроса, своих знаний пока не хватает. Программа формирует отчёт файл.xls(приложен), в котором необходимо найти и скопировать показания(выделены желтым) в существующую книгу. В макрорекордере был составлен код, но возникла необходимость поиска этих данных, т.к ежемесячно их расположение относительно строк и столбцов может изменяться. Думаю искать необходимо по двум критериям - система и даты (выделены зелёным) [vba]
Для написания макроса важно знать, что у вас будет в этой книге и по какому событию подтягивать показания интеграторов для определенной системы.
Цитата
для примера подойдёт пустая книга.xlsm
Для написания макроса важно знать, что у вас будет в этой книге и по какому событию подтягивать показания интеграторов для определенной системы.Kuzmich
Kuzmich, Логично, поэтому всё сначала: программа формирует файл ТЭМ-104.xls, в котором необходимо найти данные (выделены жёлтым) по критериям (выделены зелёным) и скопировать в существующую Книга1.xlsm. В существующем макросе возникла необходимость замены обычного выбора копируемых областей ("Y87:AH90") и ("AF183:AM186") на их поиск, т.к. их положение относительно строк и столбцов может изменяться. В Книга1.xlsm индекс в формулах "выбор" в рабочем варианте привязан к системной дате ("А2")
Kuzmich, Логично, поэтому всё сначала: программа формирует файл ТЭМ-104.xls, в котором необходимо найти данные (выделены жёлтым) по критериям (выделены зелёным) и скопировать в существующую Книга1.xlsm. В существующем макросе возникла необходимость замены обычного выбора копируемых областей ("Y87:AH90") и ("AF183:AM186") на их поиск, т.к. их положение относительно строк и столбцов может изменяться. В Книга1.xlsm индекс в формулах "выбор" в рабочем варианте привязан к системной дате ("А2")SViktor
На базе вашего первого файла 2223166.xls я написал макрос. В этом файле надо поменять формат ячеек с датами на формат-дата. Макрос в файле "Скопировать показания_10-32730-1.xls" Срабатывает при изменении даты в ячейке Е1. Оба файла должны быть открыты. Попробуйте приспособить под ваши файлы. Удачи!
На базе вашего первого файла 2223166.xls я написал макрос. В этом файле надо поменять формат ячеек с датами на формат-дата. Макрос в файле "Скопировать показания_10-32730-1.xls" Срабатывает при изменении даты в ячейке Е1. Оба файла должны быть открыты. Попробуйте приспособить под ваши файлы. Удачи!Kuzmich
Michael_S, Данные нужно копировать в лист "Показания", далее с него уже формулами в акты ( их несколько "теплосеть", "водоканал", "ИРЦ" приводить все нет смысла ). Лист1 промежуточный, мною был вставлен из-за спешки ввиду краткосрочности отчётного периода и немалого объема данных
Michael_S, Данные нужно копировать в лист "Показания", далее с него уже формулами в акты ( их несколько "теплосеть", "водоканал", "ИРЦ" приводить все нет смысла ). Лист1 промежуточный, мною был вставлен из-за спешки ввиду краткосрочности отчётного периода и немалого объема данныхSViktor
Правильно ли я понимаю, что с файла отчета надо скопировать четыре группы данных за 23.01.2017 и за 22.02.2017 для двух разных систем и вставить в лист Показания в соответствующие ячейки? По всей видимости вам еще нужно разносить данные по разным адресам на листе Показания?
Цитата
Данные нужно копировать в лист "Показания"
Правильно ли я понимаю, что с файла отчета надо скопировать четыре группы данных за 23.01.2017 и за 22.02.2017 для двух разных систем и вставить в лист Показания в соответствующие ячейки? По всей видимости вам еще нужно разносить данные по разным адресам на листе Показания?Kuzmich
Kuzmich, Не совсем так, две группы данных необходимо скопировать, на текущий месяц, в данном файле это февраль, соответственно в марте февральские данные станут предыдущими и уже будут сохранены в листе "показания" и так далее из месяца в месяц. В листе "показания" конечно не один адрес, их около 70 шт., это количество файлов ТЭМ-104, мне необходимо обработать, скопировать с них данные в лист "показания" соответственно адресам. С разнесением данных с листа "показания" по актам я справился посредством формул, в основном это формула "выбор" где индекс =МЕСЯЦ(СЕГОДНЯ()), таким образом всё работает на автомате, но вот копирование данных с некоторых файлов ТЭМ-104 зашло в тупик , т.к программа сохраняет эти данные из месяца в месяц по разному: сегодня это области ("Y87:AH90") и ("AF183:AM186"), следующий месяц расположение может измениться, зависит от количества дней в месяце или ещё чего то.
Kuzmich, Не совсем так, две группы данных необходимо скопировать, на текущий месяц, в данном файле это февраль, соответственно в марте февральские данные станут предыдущими и уже будут сохранены в листе "показания" и так далее из месяца в месяц. В листе "показания" конечно не один адрес, их около 70 шт., это количество файлов ТЭМ-104, мне необходимо обработать, скопировать с них данные в лист "показания" соответственно адресам. С разнесением данных с листа "показания" по актам я справился посредством формул, в основном это формула "выбор" где индекс =МЕСЯЦ(СЕГОДНЯ()), таким образом всё работает на автомате, но вот копирование данных с некоторых файлов ТЭМ-104 зашло в тупик , т.к программа сохраняет эти данные из месяца в месяц по разному: сегодня это области ("Y87:AH90") и ("AF183:AM186"), следующий месяц расположение может измениться, зависит от количества дней в месяце или ещё чего то.SViktor
Kuzmich, При копировании данных с отчёта в лист "показания" для расстановки их по месяцам я использовал бок if , где ("А1") тот же индекс формулы "выбор" =МЕСЯЦ(СЕГОДНЯ()) [vba]
Код
Sheets("Показания").Select If [A1] = 1 Then Range("L14").Select ElseIf [A1] = 2 Then Range("T14").Select ... ' до12 по количеству месяцев в году End If Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
[/vba]
Kuzmich, При копировании данных с отчёта в лист "показания" для расстановки их по месяцам я использовал бок if , где ("А1") тот же индекс формулы "выбор" =МЕСЯЦ(СЕГОДНЯ()) [vba]
Код
Sheets("Показания").Select If [A1] = 1 Then Range("L14").Select ElseIf [A1] = 2 Then Range("T14").Select ... ' до12 по количеству месяцев в году End If Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
В листе "показания" конечно не один адрес, их около 70 шт., это количество файлов ТЭМ-104,
А можно спросить? Как Вы ориентируетесь на листе показания, на какой адрес записаны данные из этих 70-ти файлов? Если там нет ни № абонента, ни адреса установки. И почему их нет в файле? И по какому признаку, внешне, определяются файлы ТЭМ-104, за какой месяц данные. Или же, они ежемесячно заменяются новыми? Я так понял, задача в стадии разработки. Слишком много неизвестных, (иксов).
В листе "показания" конечно не один адрес, их около 70 шт., это количество файлов ТЭМ-104,
А можно спросить? Как Вы ориентируетесь на листе показания, на какой адрес записаны данные из этих 70-ти файлов? Если там нет ни № абонента, ни адреса установки. И почему их нет в файле? И по какому признаку, внешне, определяются файлы ТЭМ-104, за какой месяц данные. Или же, они ежемесячно заменяются новыми? Я так понял, задача в стадии разработки. Слишком много неизвестных, (иксов). Wasilich
Сообщение отредактировал Wasilich - Понедельник, 13.03.2017, 11:26
Wasilich, Файлы записываются по адресу.xls , ТЭМ-104 условное имя файла, для примера. Из месяца в месяц эти файлы я не сохраняю просто переписываю. В программе отчёт можно вызвать за любой период.
Wasilich, Файлы записываются по адресу.xls , ТЭМ-104 условное имя файла, для примера. Из месяца в месяц эти файлы я не сохраняю просто переписываю. В программе отчёт можно вызвать за любой период.SViktor
Сообщение отредактировал SViktor - Понедельник, 13.03.2017, 13:24
В новом файле на листе Показания уже 9 показателей на каждый месяц, а было 8 и что-то, мне кажется, вы напутали в названиях в шапке. Желательно, чтобы адрес на листе Показания повторял адрес из отчета пос. МИС д.7 (без разделения на улицу и дом)
В новом файле на листе Показания уже 9 показателей на каждый месяц, а было 8 и что-то, мне кажется, вы напутали в названиях в шапке. Желательно, чтобы адрес на листе Показания повторял адрес из отчета пос. МИС д.7 (без разделения на улицу и дом)Kuzmich