Как внутреннее соединение в Excel (например. используя ВПР)
есть ли способ внутреннего соединения двух разных таблиц Excel с помощью VLOOKUP?
в SQL, я бы сделал это так:
SELECT id, name
FROM Sheet1
INNER JOIN Sheet2
ON Sheet1.id = Sheet2.id;
Sheet1:
+----+------+
| ID | Name |
+----+------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
+----+------+
Sheet2:
+----+-----+
| ID | Age |
+----+-----+
| 1 | 20 |
| 2 | 21 |
| 4 | 22 |
+----+-----+
и результатом будет:
+----+------+
| ID | Name |
+----+------+
| 1 | A |
| 2 | B |
| 4 | D |
+----+------+
как я могу сделать это во VLOOKUP? Или есть лучший способ сделать это, кроме VLOOKUP?
спасибо.
2 ответов
сначала давайте получим список значений, которые существуют в обеих таблицах. Если вы используете excel 2010 или более поздней версии, то на листе 3 A2 поместите следующую формулу:
=IFERROR(AGGREGATE(15,6,Sheet2!$A:$A00/(COUNTIF(Sheet1!$A:$A00,Sheet2!$A:$A00)>0),ROW(1:1)),"")
Если вы используете 2007 или более раннюю версию, используйте эту формулу массива:
=IFERROR(SMALL(IF(COUNTIF(Sheet1!$A:$A00,Sheet2!$A:$A00),Sheet2!$A:$A00),ROW(1:1)),"")
будучи формулой массива, скопируйте и вставьте в строку формул, затем нажмите Ctrl-Shift-Enter вместо Enter или Tab, чтобы выйти из режима редактирования.
затем скопируйте столько строк, сколько требуется. Это позволит создать список документов, которые находятся в обоих списках. Это предполагает, что ID-это число, а не текст.
затем с этим списком мы используем vlookup:
=IF(A2<>"",VLOOKUP(A2,Sheet1!A:B,2,FALSE),"")
Это затем вернет значение из листа 1, которое соответствует.
вы можете получить этот результат с помощью Microsoft Query.
во-первых, выберите Data > From other sources > From Microsoft Query
затем выберите "файлы Excel*".
в окне "выбрать книгу" необходимо выбрать текущую книгу.
далее в окне Мастера запросов выберите sheet1$ и sheet2$ и нажмите кнопку">".
Нажмите кнопку Далее и визуальный редактор запросов открыть.
нажмите на кнопку SQL и вставьте этот запрос:
SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID
наконец закройте редактор и поместите таблицу туда, где она вам нужна.