Здравствуйте уважаемые форумчане. Есть задача, которую нужно решить в экселе. Понимаю, что задача легкая но разбираться некогда. Поиск результатов не дал. Суть задачи - собирать данные из разных листов на один. Преобразовывать некоторые данные. Проблема заключается в том что листы постоянно обновляются а данные с них должны быть по порядку. Лист Вася- 1 строка, лист Петя - 3 строки, Лист Зина- 2 строки Сводный лист собирает информацию из определенных столбцов и получается Вася- 1 Петя - 3 Зина- 2
Через день данные в листах меняются ( допустим в листе Вася появилось еще 2 строки которые должны быть вставлены в сводном листе перед Петей) в итоге получается картина Вася- 3 Петя - 3 Зина- 2 формула или макрос должны вставлять новую информацию между уже . Как это лучше реализовать?
Здравствуйте уважаемые форумчане. Есть задача, которую нужно решить в экселе. Понимаю, что задача легкая но разбираться некогда. Поиск результатов не дал. Суть задачи - собирать данные из разных листов на один. Преобразовывать некоторые данные. Проблема заключается в том что листы постоянно обновляются а данные с них должны быть по порядку. Лист Вася- 1 строка, лист Петя - 3 строки, Лист Зина- 2 строки Сводный лист собирает информацию из определенных столбцов и получается Вася- 1 Петя - 3 Зина- 2
Через день данные в листах меняются ( допустим в листе Вася появилось еще 2 строки которые должны быть вставлены в сводном листе перед Петей) в итоге получается картина Вася- 3 Петя - 3 Зина- 2 формула или макрос должны вставлять новую информацию между уже . Как это лучше реализовать?Alexander
Ух ты здорово! Только у меня программа после разблокировки макроса запрашивает Data Source - DSN file Это что за зверь такой?
И еще можно добавить функцию при пустых значниях в ячейках игнорировать данную строку. Сейчас Зина забыла данные ввести и вся информация из ее листа не отоброзилась
Ух ты здорово! Только у меня программа после разблокировки макроса запрашивает Data Source - DSN file Это что за зверь такой?
И еще можно добавить функцию при пустых значниях в ячейках игнорировать данную строку. Сейчас Зина забыла данные ввести и вся информация из ее листа не отоброзиласьAlexander
Сообщение отредактировал Alexander - Понедельник, 15.09.2014, 13:11
можно добавить функцию при пустых значниях в ячейках игнорировать данную строку.
А её разве нет? Именно игнирируются (сначала) строки с незаполненным вторым столбцом, затем считываются те, у которых есть хоть что-то во втором столбце (до первого пропуска). Ну а вам - все карты в руки, сделайте, как вам надо. Я не увидел у вас никаких условий на перенос (кроме общих рассуждений "надо что-то взять и вставить"), так что сделал, как понял. И не забывайте - вам здесь дают ПРИМЕР решения. Т.е. вы хотя бы попытайтесь разобраться и понять, что вам ответили. А то создается впечатление, что вы пытаетесь получить конкретное решение некоей конкретной вашей задачи, при этом решающие не обладают полным набором исходных данных, а вы не можете правильно объяснить свою хотелку
можно добавить функцию при пустых значниях в ячейках игнорировать данную строку.
А её разве нет? Именно игнирируются (сначала) строки с незаполненным вторым столбцом, затем считываются те, у которых есть хоть что-то во втором столбце (до первого пропуска). Ну а вам - все карты в руки, сделайте, как вам надо. Я не увидел у вас никаких условий на перенос (кроме общих рассуждений "надо что-то взять и вставить"), так что сделал, как понял. И не забывайте - вам здесь дают ПРИМЕР решения. Т.е. вы хотя бы попытайтесь разобраться и понять, что вам ответили. А то создается впечатление, что вы пытаетесь получить конкретное решение некоей конкретной вашей задачи, при этом решающие не обладают полным набором исходных данных, а вы не можете правильно объяснить свою хотелку AndreTM
Андрей здравствуйте. с DSN базой действительно - мой косяк.
Дело в том что я не знаком с какросами а методом тыка ничего не получается. в ходе проверки обнорежились две проблеммы. 1- не пойму где изменть номер строки начала сбора данных. допустим мне нужно собирать данные на листах начиная со строки №3 2- Если данные в столбце В отсутствуют то макрос перескакивает на следующий лист. Не смотря на то, что дальше есть данные. А если в строке Е отсутствуют данные то макрос выдает ошибку и следующие листы не обрабатывает. 3 - Возможно ли добавить строку в макрос котора бы регулировала начало сбора данных допустим для листа 3 с задоной строки. ( для зины сбор данных начинать со строки № 50 )
В любом случае - спасибо за помощь и затраченное на меня время
Андрей здравствуйте. с DSN базой действительно - мой косяк.
Дело в том что я не знаком с какросами а методом тыка ничего не получается. в ходе проверки обнорежились две проблеммы. 1- не пойму где изменть номер строки начала сбора данных. допустим мне нужно собирать данные на листах начиная со строки №3 2- Если данные в столбце В отсутствуют то макрос перескакивает на следующий лист. Не смотря на то, что дальше есть данные. А если в строке Е отсутствуют данные то макрос выдает ошибку и следующие листы не обрабатывает. 3 - Возможно ли добавить строку в макрос котора бы регулировала начало сбора данных допустим для листа 3 с задоной строки. ( для зины сбор данных начинать со строки № 50 )
В любом случае - спасибо за помощь и затраченное на меня времяAlexander
С пунктом 1 моего предыдущего сообщения я разобрался, только это мало помогло. Дело в том, что на данный момент я пробую оптимизировать работы данного приложения.
1 что мне нужно сделать - для каждого листа установить строку, с которой будет начинаться сбор данных. 2 если в столбце 2 нет данных то необходимо заменить их на ХХХ 3 если в столбце 5 нет данных нужно делать проверку данных до тех пор пока данные в столбце 5 не закончатся и только после этого переходить на следующий лист.
Кто сможет мне с этим помочь?
Простите за корявое изложение мыслей :-(
С пунктом 1 моего предыдущего сообщения я разобрался, только это мало помогло. Дело в том, что на данный момент я пробую оптимизировать работы данного приложения.
1 что мне нужно сделать - для каждого листа установить строку, с которой будет начинаться сбор данных. 2 если в столбце 2 нет данных то необходимо заменить их на ХХХ 3 если в столбце 5 нет данных нужно делать проверку данных до тех пор пока данные в столбце 5 не закончатся и только после этого переходить на следующий лист.
Так вы определитесь поточнее, что считать таблицей данных на листе? То есть опишите конкретно, как, по каким признакам, строго можно определить начальную строку данных и как - конечную. Потому что заявление "в столбце 2 нет данных... если в столбце 5 нет данных, то (sic!) делать проверку, пока не закончатся данные в столбце 5 (вы сами поняли, что написали?)..." - это смахивает на выражение "нигде нет никаких данных, но данные нужно собирать" Ну или сразу заявляйте, что, мол, данные из внешнего источника, и определяться нужно по параметрам полученного из внешнего источника объекта... Есть, конечно, ещё один вариант - сначала собрать все строки из используемой области листов-источников (ну, за исключением строки-заголовка), а затем по каким-то признакам разом удалить "лишние". Вот только меня как-то напрягает ваше "у Зины собирать со строки 50"... Вы уж как-нибудь определитесь: у вас листы - однотипные источники данных, или свалка кучек разного мусора.
Так вы определитесь поточнее, что считать таблицей данных на листе? То есть опишите конкретно, как, по каким признакам, строго можно определить начальную строку данных и как - конечную. Потому что заявление "в столбце 2 нет данных... если в столбце 5 нет данных, то (sic!) делать проверку, пока не закончатся данные в столбце 5 (вы сами поняли, что написали?)..." - это смахивает на выражение "нигде нет никаких данных, но данные нужно собирать" Ну или сразу заявляйте, что, мол, данные из внешнего источника, и определяться нужно по параметрам полученного из внешнего источника объекта... Есть, конечно, ещё один вариант - сначала собрать все строки из используемой области листов-источников (ну, за исключением строки-заголовка), а затем по каким-то признакам разом удалить "лишние". Вот только меня как-то напрягает ваше "у Зины собирать со строки 50"... Вы уж как-нибудь определитесь: у вас листы - однотипные источники данных, или свалка кучек разного мусора. AndreTM
Так вы определитесь поточнее, что считать таблицей данных на листе? То есть опишите конкретно, как, по каким признакам, строго можно определить начальную строку данных и как - конечную. Начальную строку для каждого файла указывать в ручную _ начало для листа 1 стока 3 _начало для листа 2 строка 6 _Начало для листа 3 строка 50 Строки необходимо указать. Реальный файл содержит 10 листов. Суть в том что некоторые листы содержат 200 строк из которых нужны только последние 20 или больше в зависимости от периода заполнения. А некоторые листы имеют только 10 заполненных строк. По этому лучше строки начала сбора данных задавать руками.
Ну или сразу заявляйте, что, мол, данные из внешнего источника, и определяться нужно по параметрам полученного из внешнего источника объекта... Да. Данные в листы добавляются из других источников которые невозможно контролировать. Тоесть в строке могут быть заполнены все ячейки а могут что то пропустить или того хуже формат данных изменить. По этой причине лучше работать с тем, что получаем.
Вы уж как-нибудь определитесь: у вас листы - однотипные источники данных, или свалка кучек разного мусора. Еще какой мусор!!! Во время когда я начал этим заниматься, все листы были однотипными, но через пару дней, данные начали различаться. В предыдущем сообщении я попытался написать алгоритм сбора данных. 1- Работаем с листом №1 сбор данных начинать со строки № 3 2- Данные в столбце А остаются без изменений, если ячейка пустая, ничего страшного идем дальше. 3- В сводной таблице в столбце В генерируется имя которое состоит из (имя листа)+(В3)+(D3)если в ячейках данных нет, вставляем текст «ХХХ» 4- В сводную таблицу разбиваем данные из ячейки Е3. Данная ячейка основная и если тут нет данных, проверяем следующую строку если в следующей строке в ячейке Е4 тоже пусто, проверяем следующую и так пока не появятся данные в столбце Е от (Е3 до Е5000) . Если данные не появились переходим к следующему листу. Лист-2 1- Работаем с листом №2 сбор данных начинать со строки № 6 ( строку можно менять в макросе ) 2- Данные в столбце А остаются без изменений, если ячейка пустая, ничего страшного идем дальше. 3- В сводной таблице в столбце В генерируется имя которое состоит из (имя листа)+(В6)+(D6)если в ячейках данных нет, вставляем текст «ХХХ» пример: ( Петя-ХХХ-9/12/2014) 4- В сводную таблицу разбиваем данные из ячейки Е6. Данная ячейка основная и если тут нет данных, проверяем следующую строку. Если в следующей строке в ячейке Е7 тоже пусто, проверяем следующую и так пока не появятся данные в столбце Е. Если данные не появились переходим к следующему листу. Я так понимаю что нужно указать диапазон проверки столбца Е - пусть будет от (Е6 до Е5000)
Так вы определитесь поточнее, что считать таблицей данных на листе? То есть опишите конкретно, как, по каким признакам, строго можно определить начальную строку данных и как - конечную. Начальную строку для каждого файла указывать в ручную _ начало для листа 1 стока 3 _начало для листа 2 строка 6 _Начало для листа 3 строка 50 Строки необходимо указать. Реальный файл содержит 10 листов. Суть в том что некоторые листы содержат 200 строк из которых нужны только последние 20 или больше в зависимости от периода заполнения. А некоторые листы имеют только 10 заполненных строк. По этому лучше строки начала сбора данных задавать руками.
Ну или сразу заявляйте, что, мол, данные из внешнего источника, и определяться нужно по параметрам полученного из внешнего источника объекта... Да. Данные в листы добавляются из других источников которые невозможно контролировать. Тоесть в строке могут быть заполнены все ячейки а могут что то пропустить или того хуже формат данных изменить. По этой причине лучше работать с тем, что получаем.
Вы уж как-нибудь определитесь: у вас листы - однотипные источники данных, или свалка кучек разного мусора. Еще какой мусор!!! Во время когда я начал этим заниматься, все листы были однотипными, но через пару дней, данные начали различаться. В предыдущем сообщении я попытался написать алгоритм сбора данных. 1- Работаем с листом №1 сбор данных начинать со строки № 3 2- Данные в столбце А остаются без изменений, если ячейка пустая, ничего страшного идем дальше. 3- В сводной таблице в столбце В генерируется имя которое состоит из (имя листа)+(В3)+(D3)если в ячейках данных нет, вставляем текст «ХХХ» 4- В сводную таблицу разбиваем данные из ячейки Е3. Данная ячейка основная и если тут нет данных, проверяем следующую строку если в следующей строке в ячейке Е4 тоже пусто, проверяем следующую и так пока не появятся данные в столбце Е от (Е3 до Е5000) . Если данные не появились переходим к следующему листу. Лист-2 1- Работаем с листом №2 сбор данных начинать со строки № 6 ( строку можно менять в макросе ) 2- Данные в столбце А остаются без изменений, если ячейка пустая, ничего страшного идем дальше. 3- В сводной таблице в столбце В генерируется имя которое состоит из (имя листа)+(В6)+(D6)если в ячейках данных нет, вставляем текст «ХХХ» пример: ( Петя-ХХХ-9/12/2014) 4- В сводную таблицу разбиваем данные из ячейки Е6. Данная ячейка основная и если тут нет данных, проверяем следующую строку. Если в следующей строке в ячейке Е7 тоже пусто, проверяем следующую и так пока не появятся данные в столбце Е. Если данные не появились переходим к следующему листу. Я так понимаю что нужно указать диапазон проверки столбца Е - пусть будет от (Е6 до Е5000)Alexander