1

У меня есть 2 таблицы и мне нужно объединить и обновить комбинацию данных обоих.

Spreadsheet A
userid, name, phone1, phone2, city
1, mister T, 123 123, 123 124, paris
2, mister A, , 123 124, tanger
3, mister B, 123 153,, tanger
5, mister D, 213 123, 123 435, london

Spreadsheet B
userid, name, phone1, phone2
1, mister T, 123 123, 123 124
2, mister A, 193 124 , 
3, mister B, 123 154,123 153
4, mister C, 123 183, 183 184
6, mister Y, 123 883, 183 884 


The resulting merge should be
userid, name, phone1, phone2
1, mister T, 123 123, 123 124, paris [No change, both are the same]
2, mister A, 193 124, 123 124, tanger [row get updated merging both spreadsheet]
3, mister B, 123 153, 123 153, tanger [phone1 get updatse with A as A wins, missing info gets merged]
[userid 4 gets remove as it doesn't exist in A]
5, mister D, 213 123, 123 435, london [new row gets added from A]

Записи из B, не существующие в A, должны быть удалены по сути, A считается основным для конфликтов.

В целом, это не просто копирование и не обычное слияние. Может ли кто-нибудь предложить помощь?

Спасибо !

PS: думая об этом, я понимаю, что доступ может быть более мощным. так что, если вы можете придумать решение, в котором я могу импортировать эти CSV-файлы в БД или БД и подходящие запросы для их объединения, это будет работать и для меня.

1 ответ1

0

Является ли первая строка "ИД пользователя" постоянным идентификатором? Предполагая, да. Может ли случиться так, что имя изменится, а идентификатор останется? Предполагая, да. Возможно ли, что разные люди получают один и тот же идентификатор? Предположим, нет.

Таким образом, вам не нужно объединять людей из обеих электронных таблиц, вы просто игнорируете людей из электронной таблицы B, которых нет в электронной таблице A. Другими словами, вы сохраняете список людей в электронной таблице A и обновляете их свойства, только если они присутствуют в Электронная таблица B также.

Тогда задача становится довольно простой. Получившаяся электронная таблица имеет однозначное соответствие электронной таблице A, и вы можете использовать VLOOKUP для поиска соответствующих записей в электронной таблице B, а затем использовать IF и ISBLANK для обновления значений.

Предполагая, что обе электронные таблицы содержат данные на Листе 1, сохраняются в разные файлы и открываются в Excel, и создается новая электронная таблица.

Заполните первый ряд с заголовками, как в электронной таблице А.

Затем введите следующие формулы:

Ячейка А2:

='[Spreadsheet A.xlsx]Sheet1'!A2

Ячейка B2:

=IF(ISBLANK('[Spreadsheet A.xlsx]Sheet1'!B2);VLOOKUP($A2;'[Spreadsheet B.xlsx]Sheet1'!$A:$E;COLUMN());'[Spreadsheet A.xlsx]Sheet1'!B2)

Используя маркер заполнения, скопируйте формулу B2 во все ячейки справа. После этого выберите вторую строку и используйте маркер заполнения, чтобы скопировать полученные формулы в последующие строки ниже. Строки, превышающие количество записей в электронной таблице A, будут заполнены # N/A. При желании можно добавить другой IF, чтобы заменить ошибки пробелами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .