Страницы: 1
RSS
Обьеденение двух таблиц в одну общую по адресу дома
 
Доброго времени суток уважаемые форумчане
На работе была поставлена задача перенести из очень объемных таблиц данные и объединить их в одну общую.
Из таблицы ФИО перенести поля: фамилия имя отчество и телефон в таблицу счетчики. У обоих таблиц совпадают только поля: улица дом квартира причем строк в таблице счетчики может быть несколько в зависимости от количества счетчиков установленных у человека.
Если кто то может подскажите решение задачи уже сломал голову над этим, в екселе не специалист если можно то с пояснениями чтобы понять
Заранее благодарен
 
Цитата
Александр Пьянов написал:
из очень объемных таблиц данные
конкретики никакой нет? просто для кого-то 10000 строк 500 столбцов много, а для кого-то 100 на 10, а еще у кого-то 1 млн строк и 1000 столбцов...из-за этого предлагаемые решения буду оптимальные и быстрые типа PQ, макрос и так далее.. а еще покажите в файле в отдельно листе желаемый результат
Изменено: Mershik - 19.01.2021 12:39:04
Не бойтесь совершенства. Вам его не достичь.
 
Немного дополню правильнее сформулировал запрос
На работе была поставлена задача перенести из очень объемных таблиц порядка 500000 ячеек данные и объединить их в одну общую.
Из таблицы данных,  столбик 1 в котором указано улица, столбик 2 в котором указан номер дома, столбик 3 в котором указан номер квартиры а так же имеется 2 таблица аналогичная этой но с двумя дополнительными столбцами (в которых имеются данные жителей ФИО и телефон) Нужно сделать сравнение столбика 1,2,3 со второй таблицей, и если ячейки совпадают то в таблицу 1 перенести данные ФИО и Телефон чтобы они соответствовали адресу, с учетом того что ячейки могут повторяться  по 1,2,3 столбцу но они не должны удаляться а также повторяющиеся записываться одинаковыми данными.
Включаю в вопрос таблицы и итоговую таблицу как это должно выглядеть
Изменено: Александр Пьянов - 19.01.2021 14:51:52 (Не загрузились файлы)
 
Кросс. И почему в итоговой строк больше чем в счетчики?
Изменено: bigorq - 19.01.2021 15:38:22
 
Александр Пьянов, вариант макросом - можно попробовать ускорит исключив find наверное...но лень)
сделал 3 таблицы на 1 листе.
J:N место для данных из файлов ФИО,
Q:U место для данных из файла счетчики
A:G место для результат
Код
Sub mrshkei()
Dim arr1, arr2, arr3, arr4, i As Long, j As Long, cell As Range, x As Long, CEL As Range
arr1 = Range("J2:N12")
arr2 = Range("Q2:W12")
ReDim arr3(1 To UBound(arr2), 1 To 1)
ReDim arr4(1 To UBound(arr2), 1 To 1)
For i = LBound(arr2) To UBound(arr2)
    arr3(i, 1) = arr2(i, 1) & ":" & arr2(i, 2) & ":" & arr2(i, 3)
    arr4(i, 1) = arr1(i, 1) & ":" & arr1(i, 2) & ":" & arr1(i, 3)
Next i
Range("O2").Resize(UBound(arr3), 1) = arr3
Range("v2").Resize(UBound(arr3), 1) = arr4
i = 1

For j = LBound(arr2) To UBound(arr2)
    Set cell = Range("O1").Resize(UBound(arr4) + 1, 1).Find(arr4(j, 1))
    If Not cell Is Nothing Then
        x = Application.WorksheetFunction.CountIf(Range("v1:v" & j + 1), cell) - 1
        arr2(i, 6) = arr1(cell.Row - 1 + x, 4)
        arr2(i, 7) = arr1(cell.Row + -1 + x, 5)
        i = i + 1
    End If
Next j
Range("A2").Resize(UBound(arr2), 7) = arr2
Range("O2").Resize(UBound(arr3), 1).Clear
Range("v2").Resize(UBound(arr3), 1).Clear
End Sub


Не бойтесь совершенства. Вам его не достичь.
 
Уважаемый Mershik
Большое спасибо вам за помощь в обеденении таблиц. но не совсем получилось у меня добиться результата не на черновике.  
Огромная просьба помочь мне в поставленной задаче нужно сделать так как в варианте который я прилагаю в письме только конечные и начальные адреса ячеек изменятся как и исходные данные Адреса ячеек будут P26:X103030  и AA26:AG518921
Названия столбцов в конечной таблице  будут : AO, ул, дом, кв, Прием, Окончание проверки, место монтажа, Вид счетчика модель счетчика Наименование абонента, и поле телефоны 3 шт.
Заранее спасибо если получиться помочь с меня вознагражение на пиво)
 
Александр Пьянов,
Цитата
Александр Пьянов написал:
не на черновике.
так нужно читать правила  
Цитата
2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.
нет вообще совпадающих адресов?
Изменено: Mershik - 20.01.2021 13:58:49
Не бойтесь совершенства. Вам его не достичь.
 
Здравствуйте еще раз переформулирую как положено создал таблицу с названием итог 21.01 вкладываю ее во вложении
Адреса в обоих таблицах идут вразнобой то есть в таблице 1 адрес может быть первой строчкой а в таблице 2 он может быть где то в средине списка. они есть в обоих таблицах. у меня только вырезка из таблицы в реальном файле  103004 строк в таблице 1 счетчики, а в таблице 2 абоненты 518895 записей
Задача найти абонента по адресу в таблице 1  сравнить эти данные с 2 таблицей то есть с присвоением ему телефона данных по счетчикам и вывести итог в 3 общую таблицу у одного абонента могут быть несколько счетчиков это разные записи. У меня показано как должно быть в таблице 3 Итог
 
Александр Пьянов,
1 - почему для 3 строки   2 Поселковая 26 145- у вас стоит фамилия Мусонов Д. Г. а не Степанов Ю. В.??
2 - Заозерная 40 162стоит фамилия  Есипов Д. В.а не  ШВЕЦ А. В?? и так далее

с таким подходом решайте самостоятельно. Удачи
Изменено: Mershik - 21.01.2021 12:54:05
Не бойтесь совершенства. Вам его не достичь.
 
Исправил посмотрите пожалуйста я просто на нервах не углядел каждую минуту спрашивают про таблицу  
 
Дубль-тема размещена в Работе.
 
Цитата
vikttur написал:
Дубль-тема размещена в Работе.
о как...интересно. ну да ладно
1. положение таблиц не менять
2. 1 строка шапка
3. Сортируете таблицы (данные-сортировка - 3 уровня: 1 по улице, 2 по дому, 3 по квартире)
4. запускаете макрос
Изменено: Mershik - 21.01.2021 15:14:15
Не бойтесь совершенства. Вам его не достичь.
Страницы: 1
Наверх