Соединение двух столбцов для создания списка данных

2

В настоящее время у меня есть два столбца, которые необходимо сравнить. Col A, Sheet 1 & amp; Col A, Лист 2.

Лист 1 содержит:

A      B       C
5000   Apples  WI
6182   Oranges NY
7271   Grapes  MN
2293   Peanuts FL

Лист 2 содержит:

A
4032
5233
7271
2293

Должны получить результаты, как ....

7271   Grapes  MN
2293   Peanuts FL

Мне нужно только отображать результаты, которые содержат те же числа, что и лист 2. Есть ли лучший способ, чем загружать лист 2 в массив и сравнивать его с каждой ячейкой на листе 1?

    'For i = 1 to Sheet1LastRow

    Sheet2Row = Range("A" & Rows.Count).End(xlUp).Row
    Sheet2Array = Range("A2:A" & Sheet2LastRow).Value
            For i = LBound(Sheet2Array, 1) To UBound(Sheet2Array, 1)

    'if cell = Sheet2Array(i, 1)
     '....
    'End if

    Next i

   'Next Cell sheet 1
Brad
источник
Есть ли причина, по которой вы не можете использовать =VLOOKUP()?
JaredT
Я думаю, я не слишком знаком с VLOOKUP. Если бы это могло быть реализовано VBA и работать между двумя различными книгами, это было бы вариантом. Может ли это быть реализовано VBA для работы с X строками данных в столбце A на обоих листах?
Brad

Ответы:

3

Это основная функция =VLOOKUP(),

Синтаксис:

=VLOOKUP(
         compare this cell, 
         to the cells in the leftmost column of this range,
         returning the corresponding value from this column index,
         true/false for range lookup (just leave this false if you aren't sure)
 )

На листе 2 в ячейке B1 вы должны разместить =VLOOKUP(A1,Sheet1!A:B,2,False) а в С1 вы бы поместили =VLOOKUP(A1,Sheet1!A:C,3,False)

Эта функция работает как между рабочими таблицами, так и между рабочими книгами (но вам нужно будет включить ссылки и помнить об изменениях в обеих рабочих книгах). VBA не требуется, это простая встроенная функция.

Продолжая это, вы, вероятно, получите #N/A ошибки для значений, которых нет в исходной таблице. Оберните формулу в =IFERROR( your vlookup() function , "" ) заменить любые ошибки на пустую ячейку.

JaredT
источник
1

Из ваших вопросов и примеров данных видно, что в качестве выходных данных вы ищете столбец с совпадающими данными в непрерывном блоке ячеек без пробелов или ошибок между ними.

Если вы хотите использовать формульный подход, то это может быть достигнуто с помощью слегка сложного INDEX & amp; Функции MATCH в формуле массива. Как только у вас есть совпадающие данные в смежных ячейках в столбце, просто примените VLOOKUP, чтобы извлечь остальные два столбца из вашей основной таблицы в Sheet1.

Вот как. Ниже приведены два скриншота Sheet1 & amp; Лист2.

enter image description here

enter image description here

Sheet1 содержит вашу основную таблицу в столбцах A, B & amp; C, Sheet2 имеет ваш список для сопоставления с колонкой A из Sheet1

Теперь в Листе 2 в ячейке С1 поместите следующую формулу массива

{=INDEX(Sheet1!$A$1:$A$4,SMALL(IF(ISERROR(MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),"",MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),ROW(1:1)))}

Поместите эту формулу без фигурных скобок и в панели формул нажмите CTRL + SHIFT + ENTER, чтобы создать формулу массива, и перетаскивайте ее вниз, пока не получите ошибку в ячейках или длине вашего списка для сопоставления. Теперь все строки выше ячеек с ошибками имеют совпадающие ячейки из столбца A Sheet1.

Просто очистите ячейки с ошибками, и вы получите список в непрерывном блоке ячеек.

Теперь в D1 введите относительно простую формулу VLOOKUP, чтобы получить следующий соответствующий столбец из Sheet1

=VLOOKUP(C1,Sheet1!$A$1:$C$4,2,FALSE)

А в Е1 положить формулу

=VLOOKUP(C1,Sheet1!$A$1:$C$4,3,FALSE)

и перетащите оба вниз. У вас есть список по желанию.

Вы можете использовать встроенную в Excel опцию Evaluate Formula, чтобы оценить комбинацию INDEX MATCH, чтобы понять, как это работает. Он создает массив совпадающих номеров строк и выбирает первое, затем второе, а затем третье наименьшее число при перетаскивании формулы.

Здесь есть два ограничения: данные должны быть возвращены в том порядке, в котором они существуют в главной таблице, а не в том, как они находятся в таблице «для сопоставления», и в случае, если у вас более 1 совпадающих ячеек, возвращается первая.

patkim
источник