Страницы: 1 2 След.
RSS
Объединение таблиц с разных листов
 
Добрый вечер форумчане. Хотел поинтересоваться. Может кто встречался с подобной проблемой. По поиску решения своего вопроса не нашел.Первое, что нужно, это выбрать сколько колонок таблицы использовать для так называемого ключа сравнения. Если 2, например А и В, то в итоговой таблице вывести значение из ячеек А и В в одной ячейке А например(то есть объединить ячейки). Далее, используя этот ключ, сравнивать таблицы. Если имена таблицы совпадают, записывать данные в конец строки, т.к. таблицы являются продолжением друг-друга. Если такого имени нету, добавить в сводную таблицу в конец.Нужно объединить таблицы с разных листов одной книги макросом.  Посмотрите пожалуйста пример, как оно должно выглядеть. На 1-м и 2-м листе две таблицы, на третьем сборная таблица. Данных в таблицах может быть больше. Буду очень рад вашей помощи.  
Изменено: yuryr - 03.10.2017 21:40:11
 
В Таблице на Листе1 отсутствуют годы в шапке.
Наименование-2 отсутствует.
Почему?
 
Извините. сейчас перезалью файл и более точно опишу суть вопроса в первом сообщении.
 
Цитата
Мотя написал:
Наименование-2 отсутствует.
В обновлённом файле опять нет "Наименование - 2" на первом листе.
 
Перезалил. Посмотрите пожалуйста. Наименование 2 вообще пока что убрал.  
Изменено: yuryr - 03.10.2017 21:37:08
 
На Листе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. В листе Свод должно присутствовать Наименование-2?
Цитата
yuryr написал:
2.1. Да, первая строка идет как шапка.
Из чего "строится" Наименование-2?
 
Наименование состоит из города, самого наименования, которое Temp1 и т.д и возможно еще из 2-5 наименований
 
Вы не поняли: Наименование-2 откуда брать, если его нет на листах 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 в Свод.
Изменено: Мотя - 04.10.2017 19:23:43
 
Да, все верно, Думаю как первый алгоритм сравнения
 
Алгоритм непременно должен работать в "двухстороннем режиме": ведущий (ведомый), но с учетом выявления повторов в Своде).
Изменено: Мотя - 04.10.2017 19:38:11
 
Ясно. Даже не подумал об этом. И как оно будет выглядеть в программном виде?
 
На листах 1 и 2 "считаем" города (строки) и годы (столбы).
На листе Свод "рисуем годы" в 1 строке.
Резервируем 2 динамические матрицы для листов 1и 2.
С листов 1 и 2 заполняются матрицы, с учетом Город & Наименование-1.
Далее - Алгоритмы Сравнения 1и 2.
 
Не подкините литературку по этому вопросу? Только начал изучать vba. Пришлось :) Начальник заставил :). К понедельнику должен быть готов макрос, но что-то я сомневаюсь в своей компетенции :)
Изменено: yuryr - 04.10.2017 20:06:38
 
Я - не программист.
Литература? У меня таковой нет.
Я просто рассуждаю сермяжно.  :D  
Изменено: Мотя - 04.10.2017 20:56:42
 
Если хотите, попробую "накропать" макрос.
Однако, на форуме есть профессионалы - они сделают это намного лучше меня.
 
См. вариант.
 
Мотя извините за наглость, а можно тот же файл с комментариями в макросе. Действительно самому хочется разобраться. И конечно ОГРОМНЕЙШЕЕ спасибо за помощь. И есть вопрос. Из второй таблицы то, что вы выделили красным цветом не переносится в сводную. Как это можно исправить?
Изменено: yuryr - 05.10.2017 18:43:12
 
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.
Изменено: Мотя - 05.10.2017 19:34:26
 
С наименованиями так и нужно сделать, если их несколько. В идеале нужно чтобы можно было ключ самому задавать, типа введите колонки для включа или что-то в этом роде.
Даты должны фигурировать все, что указаны в нескольких документах. Просто при добавлении ключей в свод, которых нету в первой таблице, значения будут принимать только те даты, в которых они указаны в каком либо из файлов
 
Цитата
yuryr написал:
Просто при добавлении ключей в свод, которых нету в первой таблице
Ключ - он он и в Африке ключ!  
Как можно говорить о поиске по ключу в таблицах, если в одной из них нет данных для ключа?!  :D  
 
Извините, может я неверно выразился... Я имел ввиду, что те данные, которые не были занесены в свод, должны быть все же занесены в конец сводной таблицы. То есть записали в свод 1-ю таблицу, далее проверяем вторую. Если ключ(город+наименование) совпали с первой таблицей, то из второй таблицы переносятся годы и наименования в конец строки с уже записанными данными из первой таблицы данного ключа. Далее смотрим следующий ключ из таблицы 2. Если такого ключа нет в 1-й таблице, то он заносится в сводную в конец всей таблички со всеми данными. Возможно я плохо доношу свою мысль, заранее прошу прощения  :)

может что-то наподобие:
если ключ 2 неравен ключ 1{
записать в конец таблицы всю строку(город, наименование и все данные)
} иначе
добавить к имеющемуся ключу в сводной таблице в конец строки годы и значения
Изменено: yuryr - 05.10.2017 20:55:40
 
"Интересный" у Вас алгоритм поиска по ключам, однако... :D
Давайте поступим так: я впишу сегодня комменты в макрос, а Вы попробуете разобраться с макросом.
Завтра - ещё только Пятница!  :D
Макрос - тривиален, как советский трЁльник!
Изменено: Мотя - 05.10.2017 21:03:35
 
См.
 
Знаете что Мотя? Вы замечательная :). Спасибо вам за вашу помощь. Проверьте, для меня это важно. Я приношу свои извинения, что отнял у вас время. Но в это же  время ещё и благодарю от чистого сердца! :) Посмотрю ваш файл завтра днем, т.к. уехал из города по работе...  
Изменено: yuryr - 10.10.2017 13:01:50
Страницы: 1 2 След.
Наверх