![Excel — объединение 2 листов в 1 на основе идентификатора человека и создание новых строк, если идентификатор найден более одного раза](https://rvso.com/image/1618340/Excel%20%E2%80%94%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%202%20%D0%BB%D0%B8%D1%81%D1%82%D0%BE%D0%B2%20%D0%B2%201%20%D0%BD%D0%B0%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5%20%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%B0%20%D1%87%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA%D0%B0%20%D0%B8%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BD%D0%BE%D0%B2%D1%8B%D1%85%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%2C%20%D0%B5%D1%81%D0%BB%D0%B8%20%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%20%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%20%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B3%D0%BE%20%D1%80%D0%B0%D0%B7%D0%B0.png)
У меня есть данные о человеке и адресные данные на двух разных листах, которые я хочу объединить в один. Проблема в том, что у каждого человека может быть более одного адреса.
Например, если у меня есть следующие 2 набора данных:
**Person Data**
PersonID Name
1 John Smith
2 Mark Brown
**Address Data**
PersonID Address
1 UK
1 France
1 USA
2 UK
Мне нужно, чтобы они были объединены следующим образом:
**Combined Data**
PersonID Name Address
1 John Smith UK
1 John Smith France
1 John Smith USA
2 Mark Brown UK
Есть ли способ сделать это через формулы Excel? Спасибо
решение1
Похоже, вы просто хотите добавить имя человека в каждую строку списка адресных данных. Если так, то это просто.
Предположения
- Данные о людях отсортированы и последовательны (т. е. PersonID 1 находится в строке 2, PersonID 100 находится в строке 101) — если это не так, см. последний раздел.
- Адресные данные сортируются
Решение
**Combined Data Sheet**
PersonID Name Address
=$Addresses!A2 =OFFSET($Names!$B$1, A2, 0) =$Addresses!B2
И, конечно же, скопируйте формулы вниз.
Объяснение
Первый и последний столбцы просто копируются из листа Addresses. Функция OFFSET
позволяет вам перемещаться вниз или поперек на определенную величину. В этом случае мы знаем, что правильный Person будет в строке PersonID + 1. Поскольку мы начинаем со строки 1 ( $Names!$B$1
), +1 не нужен.
Непоследовательные идентификаторы лиц
Функцию VLOOKUP
можно использовать для поиска PersonID, а затем вернуть другой столбец в той же строке. В этом случае, что-то вроде:
=VLOOKUP(A2, Names!$A$1:$B$1000, 2, FALSE)