Как внутреннее соединение в 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, которое соответствует.

enter image description here


вы можете получить этот результат с помощью Microsoft Query.

во-первых, выберите Data > From other sources > From Microsoft Query

enter image description here

затем выберите "файлы Excel*".

в окне "выбрать книгу" необходимо выбрать текущую книгу.

далее в окне Мастера запросов выберите sheet1$ и sheet2$ и нажмите кнопку">". enter image description here

Нажмите кнопку Далее и визуальный редактор запросов открыть.

нажмите на кнопку SQL и вставьте этот запрос:

SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID

наконец закройте редактор и поместите таблицу туда, где она вам нужна.

результат должен выглядеть так : enter image description here