Добрый вечер форумчане. Хотел поинтересоваться. Может кто встречался с подобной проблемой. По поиску решения своего вопроса не нашел.Первое, что нужно, это выбрать сколько колонок таблицы использовать для так называемого ключа сравнения. Если 2, например А и В, то в итоговой таблице вывести значение из ячеек А и В в одной ячейке А например(то есть объединить ячейки). Далее, используя этот ключ, сравнивать таблицы. Если имена таблицы совпадают, записывать данные в конец строки, т.к. таблицы являются продолжением друг-друга. Если такого имени нету, добавить в сводную таблицу в конец.Нужно объединить таблицы с разных листов одной книги макросом. Посмотрите пожалуйста пример, как оно должно выглядеть. На 1-м и 2-м листе две таблицы, на третьем сборная таблица. Данных в таблицах может быть больше. Буду очень рад вашей помощи.
Вопросы: 1. Свод регулярно обновляется? 1.1. Количество столбов (годы) в исходных таблицах всегда разные? 2. В листе Свод в столбе А: Город & Наименование-1? 2.1. В листе Свод должно присутствовать Наименование-2? 2.2. В листе Свод в 1 строке, с какого листа 1(2) начинать "рисовать" годы? 3. Сравнение строк на листах 1(2) идет только по городам или по Город & Наименование-1? 3.1. Сравнение 1: лист 1 - ведущий, лист 2 - ведомый? 3.2. Сравнение 2: лист 2 - ведущий, лист 1 - ведомый?
1. Да, регулярно 1.1. Да, всегда разные 2. Да, можно город и наименование объединить в один столбец 2.1. Да, первая строка идет как шапка. 2.2. Начало идет всегда с первого листа( с первой таблицы) 3. Сравнение идет по Город и Наименование - это обязательное условие данного макроса, т.к. наименований может быть несколько. 3.1. Сравнение 1: лист 1 - ведущий, лист 2 - ведомый. Я думаю так будет правильно.
Пока что не обращать на это внимания. Пока что исходить только из одного наименования. Дальше буду думать, как и со 2-м наименованием реализовать. Оно будет идти строго за первым наименованием.
Алгоритм сравнения 1 (если не так, как надо - поправьте): 1. каждый Город & Наименование-1 с листа 1 ищем на листе 2, 1.1. нашли - обе строки в Свод, 1.2. не нашли - строку с листа 1 в Свод.
Алгоритм сравнения 2 (если не так, как надо - поправьте): 1. каждый Город & Наименование-1 с листа 2 ищем на листе 1, 1.1. нашли - обе строки в Свод без повтора 1.1., 1.2. не нашли - строку с листа 2 в Свод.
На листах 1 и 2 "считаем" города (строки) и годы (столбы). На листе Свод "рисуем годы" в 1 строке. Резервируем 2 динамические матрицы для листов 1и 2. С листов 1 и 2 заполняются матрицы, с учетом Город & Наименование-1. Далее - Алгоритмы Сравнения 1и 2.
Не подкините литературку по этому вопросу? Только начал изучать vba. Пришлось Начальник заставил . К понедельнику должен быть готов макрос, но что-то я сомневаюсь в своей компетенции
Мотя извините за наглость, а можно тот же файл с комментариями в макросе. Действительно самому хочется разобраться. И конечно ОГРОМНЕЙШЕЕ спасибо за помощь. И есть вопрос. Из второй таблицы то, что вы выделили красным цветом не переносится в сводную. Как это можно исправить?
1. Комменты в макросе - напишу. 2. Лист Svod - сбор совпавших по : Город & Наименование-1. 2.1. Неточность: годы из Т1 и Т2 указаны не везде правильно. Это - не проблема. Надо знать, когда "рисовать" даты из Т1 и Т2, а когда только из Т2. Из Ваших объснений - это непонятно. 3. Лист Протокол Т1 - не найденные в Т2. 3.1. Годы, если надо, можно указать. 4. Лист Протокол Т2 - не найденные в Т1. 4.1. Годы, если надо, можно указать. P.S. На мой взгляд: так удобнее следить за несовпадением по Город & Наименование-1, зная, что на Листе Svod - только совпадения. Кстати, при наличии других наименований, можно сделать ключ поиска: Город & Наименование-1 & Наименование-2 & ... & Наименование-N.
С наименованиями так и нужно сделать, если их несколько. В идеале нужно чтобы можно было ключ самому задавать, типа введите колонки для включа или что-то в этом роде. Даты должны фигурировать все, что указаны в нескольких документах. Просто при добавлении ключей в свод, которых нету в первой таблице, значения будут принимать только те даты, в которых они указаны в каком либо из файлов
Извините, может я неверно выразился... Я имел ввиду, что те данные, которые не были занесены в свод, должны быть все же занесены в конец сводной таблицы. То есть записали в свод 1-ю таблицу, далее проверяем вторую. Если ключ(город+наименование) совпали с первой таблицей, то из второй таблицы переносятся годы и наименования в конец строки с уже записанными данными из первой таблицы данного ключа. Далее смотрим следующий ключ из таблицы 2. Если такого ключа нет в 1-й таблице, то он заносится в сводную в конец всей таблички со всеми данными. Возможно я плохо доношу свою мысль, заранее прошу прощения
может что-то наподобие: если ключ 2 неравен ключ 1{ записать в конец таблицы всю строку(город, наименование и все данные) } иначе добавить к имеющемуся ключу в сводной таблице в конец строки годы и значения
"Интересный" у Вас алгоритм поиска по ключам, однако... Давайте поступим так: я впишу сегодня комменты в макрос, а Вы попробуете разобраться с макросом. Завтра - ещё только Пятница! Макрос - тривиален, как советский трЁльник!
Знаете что Мотя? Вы замечательная . Спасибо вам за вашу помощь. Проверьте, для меня это важно. Я приношу свои извинения, что отнял у вас время. Но в это же время ещё и благодарю от чистого сердца! Посмотрю ваш файл завтра днем, т.к. уехал из города по работе...